此问题直接来自我的另一个问题here。该问题的最后一段answer提到CDI
技术。Java EE中的CDI技术的目的及其与UI技术如JSF和后端技术(如EJB)的关系
你能解释一下这项技术的目的是什么吗?该技术与JSF和EJB有任何关系吗?我已经通过这个question,但我不清楚该技术的目的是什么。我特别想知道它适合其他Java EE技术(如EJB和JSF)。
此问题直接来自我的另一个问题here。该问题的最后一段answer提到CDI
技术。Java EE中的CDI技术的目的及其与UI技术如JSF和后端技术(如EJB)的关系
你能解释一下这项技术的目的是什么吗?该技术与JSF和EJB有任何关系吗?我已经通过这个question,但我不清楚该技术的目的是什么。我特别想知道它适合其他Java EE技术(如EJB和JSF)。
添加到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。
进一步阅读:
首先,CDI是一种依赖注入标准框架。它定义了对象通过实例化(private FooDao dao = new FooDao()
)而不是通过创建和管理实例的容器来获得其依赖关系的方式。你可以阅读更多关于依赖注入(谷歌/维基)。
该标准定义了如何与JSF和EJB协同工作。
简而言之,CDI以Spring的方式绑定JavaEE中的所有组件,但CDI是一种标准。