EJB bean和CDI bean以及Injection

lai*_*man 4 java dependency-injection ejb java-ee cdi

看完之后,

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

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

非常感谢.:)

Bre*_*ail 8

我会做出以下更正:

  1. 与beans.xml 相同的归档中的所有类都是CDI bean,包括 EJB.

  2. 只能使用@EJB(在另一个EJB 或任何其他EE托管对象(包括CDI bean)中)注入EJB,而可以使用@inject(在EJB bean或CDI bean中)注入CDI bean和EJB 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)等).