我對Spring使用PropertyPlaceholderConfigurer
有一個奇怪的問題。我的一個豆的設計如下:Spring:PropertyPlaceholderConfigurer找不到屬性文件
<bean name="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
的問題是,春天永遠找不到jdbc.properties(FileNotFoundException
)。該文件位於bundle classpath中的一個名爲「resources」的文件夾中(我正在使用OSGi項目)。我嘗試了幾乎所有的組合(「jdbc.properties」,「/jdbc.properties」,「classpath:jdbc.properties」,「classpath:/jdbc.properties」,「/resources/jdbc.properties」,以及其他所有組合的組合。等等......)但它從來沒有工作。
的信息,如果在某些時候,我做這樣的事情:
URL u = someClassLoader.getResource("jdbc.properties");
它的工作沒有任何問題,並找到該文件。其實我完全無法理解春天的錯誤。
如果您有任何想法來幫助我,請提前致謝。春天我不是很有經驗,所以我可能在某個地方犯了一個錯誤。
[編輯]
事實上,它的類加載器的問題: 如果我做的:
new ClassPathResource("jdbc.properties");
這是行不通的。但是:
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
完美的作品。
我確實認爲Spring使用自己捆綁包的ClassLoader被我的捆綁包使用。你知道解決這個棘手問題的方法嗎?
感謝,
目前,我必須在我的配置文件中加入可怕的靜態路徑進行測試(如bundleresource://63.jhdjlzeo:2/jdbc.properties(它適用於它))。我還沒有找到任何其他解決方案(參見其他評論infra) – ThR37