OSGi的新R4.2規範描述了Blueprint服務,用於依賴注入和服務連線。OSGi:Blueprint是否取代聲明式服務?
Blueprint是否會取代聲明式服務(它仍然是規範的一部分), 或者它們是否打算一起工作?
Blueprint是否已經可用於流行的實現(Felix和Equinox)?
OSGi的新R4.2規範描述了Blueprint服務,用於依賴注入和服務連線。OSGi:Blueprint是否取代聲明式服務?
Blueprint是否會取代聲明式服務(它仍然是規範的一部分), 或者它們是否打算一起工作?
Blueprint是否已經可用於流行的實現(Felix和Equinox)?
我問自己同樣的問題,並與其他人討論這個話題時,男高音說雖然兩者在某種程度上是重疊的,但使用時的用例卻有很大不同。 DS是一種輕量級解決方案,可以聲明性地避免Activators和模型服務依賴關係。 BP基本上是一個針對企業部署的DI容器。對於那些不熟悉OSGi的動態特性的「常規」Java開發人員來說,它更常見(隱藏在代理之後)。
執行方面,有兩個項目在工作(它們都是容器不可知的,並且沒有正式發佈)。 Spring DM 2.0將提供一個實現(2.0.0.M1 already contains a working implementation)以及Apache作爲其geronimo項目(slideshow)的一部分。
對於基於費利克斯環境中我的經驗,DS是唯一的依賴注入是成熟enougth並提供使用OSGi綱要規範的其他部分,如一致性ConfigAdmin。
藍圖在我看來是OSGi規範中Spring DM的政治包容。
iPojo是基於Java註釋而非XML描述符的替代方案,它隱藏了OSGi基礎的一部分。
如果您以前使用過Spring,那麼Blueprint服務使用起來會比較熟悉。聲明性服務不如OSGi容器中的功能強大但廣泛採用。
另一個問題是,藍圖服務 - 據我所知 - 都在一個容器中,藍圖容器 - 而聲明性服務在引用它們的包中可用。特別是在Equinox中,這會導致不同的行爲。如果你想遵守春分規定的嚴格的類加載方法,DS應該用在藍圖上。
這個電流起飛 - [藍圖或DS或什麼用?(http://karaf.922171.n3.nabble.com/Blueprint-or-DS-or-what-to-use-td4045845.html ) – fnt