【问题标题】:Producers with parameter injection?有参数注入的生产者?
【发布时间】:2013-10-05 17:13:41
【问题描述】:

如何创建根据参数创建对象的生产者方法?

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

}

【问题讨论】:

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


    【解决方案1】:

    是的,您可以将InjectionPoint 对象注入到您的生产者方法中。限定符的 type 属性必须是 @Nonbinding。从InjectionPoint 中,您可以获得对注入点注释的引用,找到您的 JPAContainer 并从中读取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多