我浏览时看到了这几次..人都在使用@Inject
标注自己注入EntityManager
这样的:如何栈定义注解在Java中使用@Inject注解
@Inject @MyEm EnityManager em;
,因为你不能只是注入EntityManager
。您只能使用@PersistenceContext
。有没有人知道如何做这个工作(使用自定义注释),因为我没有在网上找到任何信息?请举个例子,如果可以的话。
我浏览时看到了这几次..人都在使用@Inject
标注自己注入EntityManager
这样的:如何栈定义注解在Java中使用@Inject注解
@Inject @MyEm EnityManager em;
,因为你不能只是注入EntityManager
。您只能使用@PersistenceContext
。有没有人知道如何做这个工作(使用自定义注释),因为我没有在网上找到任何信息?请举个例子,如果可以的话。
基本上你需要做的是创建一个鉴别符注释并将其与生产者结合使用。这使您可以在Java EE应用程序中的其他bean中简单@注入实体管理器。这里是一个例子:
@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;
}
这被称为“限定符”。每个CDI教程都应该解释它们。总之:
@Qualifier