以前は、クラスパス上のファイルからプロパティをロードする方法がありました:
<context:property-placeholder location="classpath:myConfigFile.properties" />
そしてそれはうまくいきました。しかし今、クラスパスにないシステム上の特定のファイルからプロパティをロードしたいと考えています。ファイルを動的にロードできるようにしたかったので、Java 環境変数を使用してファイルを設定しています。以下に簡単な例を示します。
Java の場合:
System.setProperty("my.prop.file", "/path/to/myConfigFile.properties");
Spring XML の場合:
<context:property-placeholder location="${my.prop.file}" />
ルチアーノのアイデアのおかげで、私はこの方法でも試しました:
<context:property-placeholder properties-ref="prop" />
<util:properties id="prop" location="reso"/>
<bean id="reso" class="org.springframework.core.io.FileSystemResource">
<constructor-arg index="0" value="${my.prop.file}" />
</bean>
私が試したことはすべて失敗しました。my.prop.file を何に設定しても。最大のヒットは次のとおりです。
<context:property-placeholder location="/path/to/myConfigFile.properties" />
(ClassNotFoundException: .path.to.myConfigFile.properties)
<context:property-placeholder location="file:/path/to/myConfigFile.properties" />
(ClassNotFoundException: file:.path.to.myConfigFile.properties)
<context:property-placeholder location="file:///path/to/myConfigFile.properties" />
(ClassNotFoundException: file:...path.to.myConfigFile.properties)
クラスパスではなくファイルシステム上にある場所でプロパティプレースホルダーをどのように使用しますか? Spring 3.0.5 を使用しています。
spring ファイルをロードする Java プログラムを実行するスクリプトに問題があることがわかりました。助けてくれてありがとう。結局、元のコードが機能するため、この質問を削除するように要求します。ご協力ありがとうございました。