2012-12-21 143 views

回答

7

添加到Bozho的正确答案:

CDI是JSF的托管bean的超集,JSF将最终弃用自己的本地托管bean系统。在JSF 2.2中已经采取了这一步。

CDI不是EJB bean的超集,但它们是相辅相成的。 CDI不仅为EJB bean提供更高级的DI,而且还能够为EJB bean提供一个范围(主要用于有状态bean)。 EJB反过来提供交易和安全服务,而CDI不提供。像JSF管理的bean一样,EJB bean最终将被合并到CDI组件模型中。此外,Marina Vatkina(EJB规范领导)还有strongly hinted

进一步阅读:

3

首先,CDI是一种依赖注入标准框架。它定义了对象通过实例化(private FooDao dao = new FooDao())而不是通过创建和管理实例的容器来获得其依赖关系的方式。你可以阅读更多关于依赖注入(谷歌/维基)。

该标准定义了如何与JSF和EJB协同工作。

  • 您的JSF管理bean可以通过CDI进行定义,这样就可以中注入服务托管bean,并让CDI管理JSF生命周期管理豆
  • EJB也可以从先进的依赖注入受益的CDI(以前他们有自己的功能差的DI)。

简而言之,CDI以Spring的方式绑定JavaEE中的所有组件,但CDI是一种标准。