【发布时间】:2013-01-16 20:34:41
【问题描述】:
我有一个 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中,我导入了jar文件中的applicationContext.xml文件,如下所示:
<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 中的属性文件可以被位于WEB-INF/lib/externalApp.jar 中的jar 文件中的对象访问。
查看我得到的堆栈跟踪,看起来导入的上下文文件中引用的对象在加载属性之前首先加载,这不是我想要的。
谢谢。
【问题讨论】:
标签: java spring jakarta-ee spring-mvc properties