我发现了这个问题: What is the difference between @Inject and @EJB 但我并没有变得更聪明。我以前没有做过 Java EE,也没有依赖注入的经验,所以我不明白我应该使用什么?
@EJB
是一种旧的注入方式吗?在使用 @Inject
使用新的CDI框架时,使用这个注释时EJB容器是否完成了注入?这是区别吗,我应该使用 @Inject
而不是 @EJB
如果是这种情况?
原文由 LuckyLuke 发布,翻译遵循 CC BY-SA 4.0 许可协议
@EJB
仅用于注入 EJB,现在已经有一段时间了。@Inject
可以注入任何托管 bean,并且是新 CDI 规范的一部分(自 Java EE 6 起)。在简单的情况下,您可以简单地将
@EJB
更改为@Inject
。 In more advanced cases (eg when you heavily depend on@EJB
’s attributes likebeanName
,lookup
orbeanInterface
) than in order to使用@Inject
您需要定义一个@Producer
字段或方法。这些资源可能有助于理解
@EJB
和@Produces
之间的区别以及如何充分利用它们:Antonio Goncalves 的博客:
CDI 第一部分
CDI 第二部分
CDI 第三部分
JBoss 焊接文档:
CDI 和 Java EE 生态系统
堆栈溢出:
根据条件注入@EJB bean