目前我的spring context-web有bean定义:
<bean id="myFile" class="org.springframework.core.io.ClassPathResource">
<constructor-arg value="META-INF/myfile.yml" />
</bean>
因此, myfile.yml 我必须继续部署 war 。但我想在$ TOMCAT_HOME / lib文件夹中保留 myfile.yml 并从那里引用bean。 我怎么能这样做?
答案 0 :(得分:2)
使用tomcat时,会在类路径中添加一些特定路径。您可以在catalina.properties
内找到以下属性:
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
因此,默认情况下$TOMCAT_HOME/lib
在您的类路径中,您可以像这样创建您的bean:
<bean id="myFile" class="org.springframework.core.io.ClassPathResource">
<constructor-arg value="myfile.yml" />
</bean>
但是,您也可以使用FileSystemResource来检索外部资源。
假设您使用的是Spring >= 3
,则可以使用SpEL语言(请参阅文档here)来检索系统变量。
#{systemEnvironment['TOMCAT_HOME']}
所以最终结果如下:
<bean id="myFile" class="org.springframework.core.io.FileSystemResource">
<constructor-arg value="#{systemEnvironment['TOMCAT_HOME']}/lib/myfile.yml" />
</bean>