首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中使用@Inject注解堆叠自定义注解

如何在Java中使用@Inject注解堆叠自定义注解
EN

Stack Overflow用户
提问于 2012-01-07 22:40:17
回答 2查看 2.5K关注 0票数 2

我在浏览的时候看到过几次..人们正在使用自己的@Inject注释来注入EntityManager,如下所示:

代码语言:javascript
复制
@Inject @MyEm EnityManager em;  

因为你不能简单的注入EntityManager。您只能使用@PersistenceContext来完成此操作。有没有人知道怎么做(使用自定义注释),因为我在网上找不到任何信息?如果可以的话,请举个例子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-07 22:51:04

基本上,您需要做的是创建一个鉴别器注释,并将其与生产者结合使用。这允许您在Java应用程序内的其他bean中简单地@Inject您的实体管理器。下面是一个示例:

代码语言:javascript
复制
@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;
}
票数 4
EN

Stack Overflow用户

发布于 2012-01-07 22:48:01

这被称为“限定符”。每个CDI教程都应该对它们进行解释。简而言之:

  • 创建您自己的批注,并在实现某些接口的具体类上或在创建实例的生产者方法上使用@Qualifier
  • use您的限定符批注对其进行批注
  • 在注入点使用您的自定义批注来区分接口的两个或多个实现
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8770465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档