2013-10-05 39 views
0

如何創建一個根據參數創建對象的生產者方法?有參數注入的生產者?

我的目標是能夠在我的應用程序的不同類中注入CrudService,但要將其與服務所用的類(例如User.class)進行參數化。

下面的代碼當然不起作用,但說明了我的意圖。

@Produces 
@JPAContainer(Class type) //something like this? 
public JPAContainer getJPA() { 
    @PersistenceContext 
    private EntityManager em; 

    @Produces 
    @JPAContainerAnnot 
    public JPAContainer getJPAContainer() { 
     return JPAContainerFactory.make(type, em); //eg: class = User.class, Person.class 
    } 
} 

@Stateless 
public class CrudServiceUser() { 
    @Inject 
    @JPAContainer(type = User.class) //something like this parameter 
    private JPAContainer container; 
} 

@Qualifier 
@Retention(RetentionPolicy.RUNTIME) 
@Target({FIELD,METHOD,PARAMETER,TYPE}) 
public @interface JPAContainer { 

} 

回答

5

是的,您可以將InjectionPoint對象注入到您的製作方法中。您的限定符的類型屬性需要爲@Nonbinding。從InjectionPoint您可以獲得對注入點的註釋的引用,找到您的JPAContainer並從中讀取值。