繁体   English   中英

CDI @Inject或普通的旧Java EE 5注释

[英]CDI @Inject or plain old java ee 5 annotations

假设我有如下的无状态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并在各处使用它更好?

您可以任一个。 对于大多数人而言,差异很小(我是否获得代理或实际对象?)。

并不是所有的东西都可以用'@Inject'注入。

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

到处都有@Inject应该可以更直接地配置替代项和扩展名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM