生产者参数注入?

时间:2013-10-05 17:13:42

标签: java java-ee jpa dependency-properties cdi

如何根据参数创建一个创建对象的生成器方法?

我的目标是能够在我的应用程序中的不同类上注入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 {

}

1 个答案:

答案 0 :(得分:5)

是的,您可以将InjectionPoint对象注入生产者方法。限定符的type属性必须为@Nonbinding。从InjectionPoint开始,您可以参考注入点上的注释,找到您的JPAContainer并从中读取值。