看完这些,
- 在哪里使用 EJB 3.1 和 CDI?
- CDI 和 EJB 如何比较?交互?和其他一些文章。
仍然对以下事情感到困惑,如果我错了,请纠正我。
- 与 bean 相同的包中的所有类.xml都是 CDI Bean除了类注释为会话/消息/单例。
- 只有 EJB 可以使用 @EJB(在另一个 EJB 中(注入,而两者CDI bean 和 EJB bean 可以使用 @inject(在 EJB bean 中(注入或 CDI 豆(。
- 类注释为 @Stateless(例如(,使用@Inject 仍然是 EJB bean,而不是 CDI bean,并且仍将是由 EJB 容器管理,具有池化和事务。
非常感谢。:)
我会做以下更正:
-
与 bean .xml 位于同一归档中的所有类都是 CDI bean,包括 EJB。
-
只有 EJB 可以使用
@EJB
注入(在另一个 EJB 或任何其他 EE 受管对象(包括 CDI bean 中(,而 CDI Bean 和 EJB Bean 都可以使用 @inject 注入(在 EJB Bean 或 CDI Bean 中(。 -
使用 @Inject 注入的注释为 @Stateless 的类仍然是 EJB Bean,如果在 Bean 部署归档中,它也可能是 CDI Bean;无论如何,它仍将由 EJB 容器管理,具有池化和事务性的所有优点。
值得注意的是,CDI 管理的 bean 是任何可以@Inject
到另一个 CDI Bean 中并且本身可以使用 @Inject
的东西,这适用于所有 EJB,并且@EJB
可用于将 EJB 注入任何其他 EE 管理的 Bean(EJB、servlet、CDI 管理的 Bean 等(。