我应该使用@EJB 还是@Inject

新手上路,请多包涵

我发现了这个问题: What is the difference between @Inject and @EJB 但我并没有变得更聪明。我以前没有做过 Java EE,也没有依赖注入的经验,所以我不明白我应该使用什么?

@EJB 是一种旧的注入方式吗?在使用 @Inject 使用新的CDI框架时,使用这个注释时EJB容器是否完成了注入?这是区别吗,我应该使用 @Inject 而不是 @EJB 如果是这种情况?

原文由 LuckyLuke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 999
2 个回答

@EJB 仅用于注入 EJB,现在已经有一段时间了。 @Inject 可以注入任何托管 bean,并且是新 CDI 规范的一部分(自 Java EE 6 起)。

在简单的情况下,您可以简单地将 @EJB 更改为 @Inject 。 In more advanced cases (eg when you heavily depend on @EJB ’s attributes like beanName , lookup or beanInterface ) than in order to使用 @Inject 您需要定义一个 @Producer 字段或方法。

这些资源可能有助于理解 @EJB@Produces 之间的区别以及如何充分利用它们:

Antonio Goncalves 的博客:

CDI 第一部分

CDI 第二部分

CDI 第三部分

JBoss 焊接文档:

CDI 和 Java EE 生态系统

堆栈溢出:

根据条件注入@EJB bean

原文由 Piotr Nowicki 发布,翻译遵循 CC BY-SA 3.0 许可协议

@Inject 可以注入任何bean,而 @EJB 只能注入EJB。您可以使用其中任何一个来注入 EJB,但我更喜欢 @Inject 无处不在。

原文由 Bozho 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题