補充 OSGI bundle的知識

 Import-Package與DynamicImport-Package的使用場景

    如果一個Bundle不能確定需要Package中的那些Class,則使用DynamicImport-Package;否則使用Imort-

    Package.

    DynamicImport-Package: 如果一個Bundle需要某些類時,而這些使用了Class.forName()進行加載,此時

    類之間的依賴關係很難被檢測出來,此時使用該Header可以在解析依賴關係時自動從類路徑中搜尋需要的類,

    從而確保依賴關係滿足;一個Bundel使用該Header,在Bundle啓動的過程中是不需要所依賴的Package能被

    Resolved的,在該Bundle後期需要的時候再去臨時動態Resolve;同時該Header支持(*),如:

    DynamicImport-Package:com.apress.ch3.*

    這將能夠同時導入com.apress.ch3下的所有類。

    Import-Package: 需要Bundle在Resolve時所依賴的Package能被Resolve, 而且不支持通配符(*);同時這兩

    個Header支持屬性:resolution:=option, 當Bundle在Resolve時會試圖解析依賴的Package.

    另外: DynamicImport-Package當一個類加載器試圖加載該Header指定的Package時,每次將Wire一個

    Package;而Import-Package有屬性resolution:=option時,將在bundle resolve時只wire一次依賴的

    Package.


另外:http://springsfeng.iteye.com/blog/1389080 這篇文章中很多知識也介紹的很好

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章