EJB bean和CDI bean以及注入

8
阅读完这些之后,

我仍然对以下问题感到困惑,如果我错了,请纠正我。

  1. 与bean.xml相同包中的所有类都是CDI bean,除了标注为session/message/singleton的类。
  2. 只有EJB可以使用@EJB(在另一个EJB内部)进行注入,而CDI bean和EJB bean都可以使用@Inject(在EJB bean或CDI bean内部)进行注入。
  3. 用@Inject注释的@Stateless(例如)类仍然是EJB bean,而不是CDI bean,并且仍将由EJB容器管理,具有池化和事务处理的全部好处。

非常感谢。 :)

1个回答

15
我会做出以下更正:
  1. 与 beans.xml 在相同 存档 中的所有类都是 CDI bean,包括 EJBs。

  2. 只有通过 @EJB 注入 EJB(在另一个 EJB 或任何其他 EE 管理的对象中,包括 CDI bean),而 @inject 可以注入 CDI bean 和 EJB bean(在 EJB bean 或 CDI bean 中)。

  3. 被 @Inject 注释的类(例如@Stateless)仍然是 EJB bean,它也可能是 CDI bean,如果在bean部署文件中无论如何,它仍将由 EJB 容器管理,具备池化和事务处理等优点。

值得注意的是,CDI managed bean 是可以 @Inject 到其他 CDI bean 中的任何东西,并且本身可以使用 @Inject,对于所有的 EJBs 都是如此,@EJB 可以用于将 EJB 注入到任何其他 EE 管理的 bean 中(EJB、servlet、CDI managed bean 等)。


那就是我现在需要知道的全部了。谢谢! - lai yoke hman
如果这个回答解决了你的问题,你应该点击答案左边的“勾选标记”来接受它。 - Brett Kail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接