私は、PropertyPlaceholderConfigurer
を使ってSpringに奇妙な問題があります。私の豆の一つは、以下のように設計されています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
)を見つけることはありませんということです。このファイルはバンドルクラスパスにある "resources"という名前のフォルダにあります(私はOSGiプロジェクトで作業しています)。
ほとんどすべての組み合わせ( "jdbc.properties"、 "/jdbc.properties"、 "classpath:jdbc.properties"、 "classpath:/jdbc.properties"、 "/resources/jdbc.properties"等...)しかしそれは決して働かない。
URL u = someClassLoader.getResource("jdbc.properties");
それは何の問題もなく作業を行い、ファイルを見つける:いくつかの点であれば
は情報については、私のような何かをします。実際に私は春のバグは何かを完全に理解することができません。
ご協力いただきありがとうございました。ありがとうございます。私は春にはあまり経験がないので、どこかでミスをしたことがあります。
[EDIT]
は実際には、クラスローダの問題だ:私が行う場合 :
new ClassPathResource("jdbc.properties");
それは動作しません。しかし:
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
は完全に動作します。
Springは自分のバンドルで消費される独自のバンドルのClassLoaderを使用すると信じています。あなたはこのトリッキーな問題を解決する方法を知っていますか?
おかげで、
現時点では、テストのためにconfig-fileにひどい静的パスを入れる必要があります(bundleresource://63.jhdjlzeo:2/jdbc.properties(これと同じです))。私は他の解決策を見いださなかった(下記の他のコメントを参照) – ThR37