此問題直接來自我的另一個問題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是一種標準。