我有一个 Spring MVC Web 应用程序,它具有以下结构:
myapp
|-META-INF
|-WEB-INF
|-classes
| |-conf
|-application.properties
|-lib
| |-externalApp.jar
| |-conf
| |-applicationContext.xml
|
|-applicationContext.xml
|-myapp-servlet.xml
在myapp/WEB-INF/applicationContext
中,我导入了applicationContext.xml
jar 文件中的文件,如下所示:
<import resource="classpath:WEB-INF/conf/applicationContext.xml" />
导入资源中的 bean 工作正常,我可以在我的 Web 应用程序的控制器/服务类中看到它们。
我遇到的问题是 jar 文件(即WEB-INF/lib/externalApp.jar/applicationContext.xml
)中的上下文文件具有用于加载属性文件的配置。属性必须由 Web 应用程序设置,因此属性文件位于 webapp 中。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
。
查看我得到的堆栈跟踪,看起来导入的上下文文件中引用的对象在加载属性之前首先加载,这不是我想要的。
谢谢。