【问题标题】:CDI @Inject or plain old java ee 5 annotationsCDI @Inject 或普通的旧 java ee 5 注释
【发布时间】:2012-09-18 22:26:00
【问题描述】:

假设我有如下的无状态 EJB:

@Stateless
public class MyService {

    @PersistenceContext(unitName="persistence")
    private EntityManager em;

    ...
}

所以这是带有 java ee 5 注释的注入,例如@PersistenceContext。 如果我使用 CDI,我不能简单地使用 @Inject,对吧?我需要为此创建生产者使用限定符,如下所示

class DBProducer {
    @Produces
    @PersistenceContext(unitName = "persistence")
    @MyDatabase
    private EntityManager em;
}

我不介意 LOC 的数量。我的问题是我应该使用什么方式?可以将这两者混合使用:CDI @Inject 和那些旧的 Java EE 5 注释,如 @EJB@PersistenceContext 等,还是坚持使用 CDI 并在任何地方使用它更好?

【问题讨论】:

    标签: java jakarta-ee annotations cdi inject


    【解决方案1】:

    你可以做任何一个。对于大多数人来说,差异很小(我得到的是代理还是实际的对象?)。

    【讨论】:

      【解决方案2】:

      目前还不是所有东西都可以用“@Inject”注入。

      最终一切都应该朝着那个方向发展,但恐怕在此之前它可能是 Java EE 9 甚至 10。

      在任何地方都有 @Inject 应该可以更直接地配置替代方案和扩展。

      【讨论】:

        猜你喜欢
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多