2014-02-22 27 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 ..我需要修改任何內容嗎? –