2012-12-21 140 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是一種標準。