2012-07-27 43 views
1

我正面臨以下問題:我正在用Spring開發一個OSGi包,我希望允許那些將使用我的包通過一個片段添加Spring上下文文件的開發人員。我怎樣才能從一個bundle碎片提供OSGi資源的Spring?

這些文件將用於配置我的Spring bean(類似現有的沒有Spring的示例:配置文件在org.apache.log4j的片段中)。

我必須使用有幾個原因是出這個問題的範圍的Spring框架,而是因爲我甚至不知道我不能使用下面的指令

<import resource="..."/> 

一些片段將在運行時可用(它是可選配置),並且我知道如果Spring無法找到資源,Spring會發出抱怨。理想情況下,我想有這樣的事情:

<import resource="my_default_configuration.xml"/> 
<import resource="my_extended_configuration.xml" 
     doesNotComplainIfAbsent="true" 
     override="true"/> 

你有任何想法,以幫助我嗎?

在此先感謝。

+0

你說他們是屬性文件,但你的代碼示例顯示xml文件。他們實際上是屬性文件還是春季上下文文件? – Robin 2012-07-27 16:15:11

+0

對不起。感謝您注意到錯誤。這是春天的上下文文件。 – ThR37 2012-07-27 16:16:16

+0

您正在代碼中創建應用程序上下文作爲ClasspathXmlApplicationContext? – Robin 2012-07-27 16:44:43

回答

1

我認爲正確使用OSGi會是更好的方法。 Spring DM(AKA Gemini Blueprint)允許你通過OSGi導入和導出Spring beans。所以你的bundle可以嘗試導入所有與特定接口匹配的bean,使用你的bundle的開發者會從他們自己的bundle中導出。它仍然是可選的,因爲如果開發人員選擇不提供任何內容,那麼最終會在您的包中包含一個空列表。