Spring:将配置文件放在Tomcat Lib中

时间:2014-02-22 23:39:53

标签: spring tomcat7

目前我的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。 我怎么能这样做?

1 个答案:

答案 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>