是否可以將Spring @Component
(或其規範之一;例如@Repository
)自動註冊爲OSGi服務?所以我可以在一個bundle和OSGi Service Registry之間使用autowiring和Spring的所有其他好處來在bundle之間進行通信?將Spring組件導出爲OSGi服務
更新:從this discussion它似乎不可能使用標準藍圖,只能在Eclipse雙子座。
是否可以將Spring @Component
(或其規範之一;例如@Repository
)自動註冊爲OSGi服務?所以我可以在一個bundle和OSGi Service Registry之間使用autowiring和Spring的所有其他好處來在bundle之間進行通信?將Spring組件導出爲OSGi服務
更新:從this discussion它似乎不可能使用標準藍圖,只能在Eclipse雙子座。
我假設你熟悉Eclipse Gemini Blueprint(以前稱爲Spring Dynamic Modules,以前稱爲Spring OSGi)?
您可以使用<service>
-tag將豆類出口。我不確定是否可以自動導出所有@Component
等註釋的bean。
討厭的解決方法,僅適用於singleton bean:將實例存儲在構造函數中的靜態字段中,並將此字段的getter用作Blueprint/iPOJO工廠方法。
沒有黑客@AlexeyRomanov建議可能的實現來支持這個可能是通過片段添加一個BeanFactoryPostProcessor
實現到Gemini Blueprint的擴展束。
該處理器可以在BeanFactory內部創建所需的OSGi導出定義,並且它應該可以正常工作。
一個可能的例子是ServiceReferenceInjectionBeanPostProcessor
形式SpringDM/Gemini的擴展,它允許你通過@ServiceReference
註解獲得OSGi-Services注入。 (雖然我聯繫春天DM這個類應該還是出現在雙子座,但我無法找到一個直接鏈接到他們的javadoc)
啊,所以如果我_don't_有''標籤,藍圖將使用一個由Spring創建而不是試圖創建自己的副本。這是正確的嗎?這是否與Apache Aries Blueprint一樣工作? –
2012-04-13 10:06:23
如果你做''顯式創建。恐怕我從未使用過Aries Blueprint –
artbristol
2012-04-13 10:13:21
和@artbristol只是喜歡OSGi :) – 2012-04-13 10:32:04