我希望能夠@注入一個支持RichFaces 4 ExtendedDataTable的數據模型,但它需要一個EntityManager來完成它的工作。 EntityManager的查詢當然需要知道類,我寧願不將它傳遞給方法調用(在這種情況下,方法不會被我的代碼調用);理想情況下,它將在構造函數中。用於數據模型的CDI生產者方法
事情是這樣的:
public class DataModel<T> {
@Inject private EntityManager em;
private Class<T> entityClass;
public DataModel(Class<T> entityClass) {
this.entityClass = entityClass;
}
//Sample method - this class will handle much more complex queries
public T findEntity(String key) {
return em.find(entityClass, key);
}
是否有可能創建一個CDI @Producer可用於注入這個DataModel的到我的支持豆?我也想過做一個資格賽,所以你可以這樣做
@Inject @JType(value = MyEntity.class) DataModel<MyEntity> dataModel;
但似乎笨拙,也需要我的@Producer叫new()
- 我認爲不會允許EntityManager而注入DataModel中。此外,我不確定您將如何要求開發者添加限定符。
或者還有更好的方法來解決這個問題,我錯過了什麼?
我會去與你的直覺。設計模式和框架的應用並不是很好的設計,它們是溝通的工具。 –