我在浏览的时候看到过几次..人们正在使用自己的@Inject注释来注入EntityManager,如下所示:
@Inject @MyEm EnityManager em; 因为你不能简单的注入EntityManager。您只能使用@PersistenceContext来完成此操作。有没有人知道怎么做(使用自定义注释),因为我在网上找不到任何信息?如果可以的话,请举个例子。
发布于 2012-01-07 22:51:04
基本上,您需要做的是创建一个鉴别器注释,并将其与生产者结合使用。这允许您在Java应用程序内的其他bean中简单地@Inject您的实体管理器。下面是一个示例:
@Qualifier
@Retention(RUNTIME)
@Target(METHOD, FIELD, PARAMETER, TYPE)
public interface @MyEm {
}
public class EntityProducer {
@PersistenceContext(unitName = 'MyPU', type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
@Produces
@MyEm
public EntityManager getEntityManager() {
return entityManager;
}
}
public class MyDAO {
@Inject
@MyEm
private EntityManager entityManager;
}发布于 2012-01-07 22:48:01
这被称为“限定符”。每个CDI教程都应该对它们进行解释。简而言之:
@Qualifierhttps://stackoverflow.com/questions/8770465
复制相似问题