次の構造を持つSpringMVCWebアプリケーションがあります。
myapp
|-META-INF
|-WEB-INF
|-classes
| |-conf
|-application.properties
|-lib
| |-externalApp.jar
| |-conf
| |-applicationContext.xml
|
|-applicationContext.xml
|-myapp-servlet.xml
で、以下に示すように、jarファイルにあるファイルをmyapp/WEB-INF/applicationContext
インポートしました。applicationContext.xml
<import resource="classpath:WEB-INF/conf/applicationContext.xml" />
インポートされたリソースのBeanは正常に機能し、Webアプリケーションのコントローラー/サービスクラスで確認できます。
私が抱えている問題は、jarファイル内のコンテキストファイル(つまりWEB-INF/lib/externalApp.jar/applicationContext.xml
)にプロパティファイルをロードするための構成があることです。プロパティファイルがwebappにあるように、プロパティはWebアプリケーションで設定する必要があります。jarファイルのコンテキストファイルの設定は次のようになります。
上記のプロパティでWebアプリケーションにあるプロパティファイルをロードしたいので、その値を次のように設定します。
<bean class="com.myapp.ExternalAppPropertyPlaceholderConfigurer">
<property name="location" value="classpath:conf/application.properties" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
上記の設定では、これらのプロパティが使用可能であることを期待するjarファイル内のクラスは、引き続きプロパティにアクセスできません。
私が推測する質問は、WEB-INF/classes/conf/application.properties
にあるjarファイル内のオブジェクトにアクセスできるようにするためのプロパティファイルを取得する方法ですWEB-INF/lib/externalApp.jar
。
私が取得しているスタックトレースを見ると、インポートされたコンテキストファイルで参照されているオブジェクトが最初にロードされてから、プロパティがロードされているように見えますが、これは私が望んでいないことです。
ありがとう。