2014-02-22 29 views
0

将配置文件目前我Spring上下文的Web有bean定义:春:在Tomcat的lib

<bean id="myFile" class="org.springframework.core.io.ClassPathResource"> 
     <constructor-arg value="META-INF/myfile.yml" /> 
    </bean> 

因此,myfile.yml我必须保持战争内部署。但是我想在$ TOMCAT_HOME/lib文件夹中保留myfile.yml并从那里引用bean。 我该怎么做?

回答

2

当使用tomcat时,一些特定的路径被添加到类路径中。你可以找到它们的内部catalina.properties以下特性:默认情况下

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar 

因此$TOMCAT_HOME/lib是在classpath中,你可以简单地像创建你的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> 
+0

我得到FileNotFoundException异常使用时: –

+0

产生的原因:java.io.FileNotFoundException:类路径资源[文件:/用户/用户为myuser /下载/apache-tomcat-7.0.47/lib/myfile.yml]无法解析为URL,因为它不存在 –

+0

我正在使用IntellJ 13 ..我需要修改任何内容吗? –