EJB bean and CDI bean and Injection



看完这些,

  • 在哪里使用 EJB 3.1 和 CDI?
  • CDI 和 EJB 如何比较?交互?和其他一些文章。

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

  1. 与 bean 相同的包中的所有类.xml都是 CDI Bean除了类注释为会话/消息/单例。
  2. 只有 EJB 可以使用 @EJB(在另一个 EJB 中(注入,而两者CDI bean 和 EJB bean 可以使用 @inject(在 EJB bean 中(注入或 CDI 豆(。
  3. 类注释为 @Stateless(例如(,使用@Inject 仍然是 EJB bean,而不是 CDI bean,并且仍将是由 EJB 容器管理,具有池化和事务。

非常感谢。:)

我会做以下更正:

  1. 与 bean .xml 位于同一归档中的所有类都是 CDI bean,包括 EJB。

  2. 只有 EJB 可以使用 @EJB 注入(在另一个 EJB 或任何其他 EE 受管对象(包括 CDI bean 中(,而 CDI Bean 和 EJB Bean 都可以使用 @inject 注入(在 EJB Bean 或 CDI Bean 中(。

  3. 使用 @Inject 注入的注释为 @Stateless 的类仍然是 EJB Bean,如果在 Bean 部署归档中,它也可能是 CDI Bean;无论如何,它仍将由 EJB 容器管理,具有池化和事务性的所有优点。

值得注意的是,CDI 管理的 bean 是任何可以@Inject到另一个 CDI Bean 中并且本身可以使用 @Inject 的东西,这适用于所有 EJB,并且@EJB可用于将 EJB 注入任何其他 EE 管理的 Bean(EJB、servlet、CDI 管理的 Bean 等(。

最新更新