2016-09-16 52 views
1

我加載在彈簧的context.xml屬性文件,我在 $給 外部屬性文件位置的佔位符{} spring.profiles.active的.properties這是在類路徑中,並使用該位置作爲placholder在spring-context.xml。我彈簧的context.xml是:無法在spring-context.xml中加載屬性文件。屬性文件的路徑給出的dev.properties

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="ignoreResourceNotFound" value="true" /> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
    <property name="searchSystemEnvironment" value="true" /> 
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 
    <property name="locations" ref="propertyConfigurerFiles" /> 
    </bean> 
    <bean id="propertyConfigurerFiles" class="java.util.ArrayList"> 
    <constructor-arg> 
    <list> 
    <value>/WEB-INF/properties/common.properties</value> 

    <!--In Developemnet Enviroenment it will be dev.properties--> 
    <value>/WEB-INF/properties/${spring.profiles.active}.properties</value> 

    <!--External Property File Location as a Placeholder--> 
    <value>${app.config.batch.location}</value> 

    </list> 
    </constructor-arg> 
    </bean> 

而我dev.properties是:

app.config.batch.location=E:/project/properties/config.properties 

我的問題是,是$ {app.config.batch .location}佔位符不是 在spring-context.xml中解析並嘗試加載文件 $ {app.config.batch.location}代替 E:/project/properties/config.properties

我希望我解釋得很好。請幫忙!

在此先感謝!

回答

0

您需要創建PropertyPlaceHolderConfigurer類的Bean。 不只是一些ArrayList bean。你爲什麼認爲你需要這個ArrayList bean?

+0

嗨@ЮрийПлевако我需要的ArrayList豆的reference.I修改我的問題,並張貼了我完整的彈簧context.xml中。 – Rosh

+0

所以當你創建你的ArrayList bean時,你需要實例化PropertyPlaceHolderConfigurer,因爲你在你的ArrayList bean配置中使用了佔位符,而你沒有它。可能的方法是在處理資源時通過構建系統解析一些佔位符 –

+0

是的。我知道但我無法找到實現它的方法。如果你能提出建議,這將會有所幫助。謝謝 – Rosh

0

看來你使用Spring配置文件,而不是與初始化時間屬性值綁定搞亂你可以做什麼...... 1)讀取屬性文件(配置文件)的 /WEB-INF /屬性/ $ {春.profiles.active} .properties 2)創建一個可讀取這些屬性值的java類。 (不要忘了使用彈簧的配置文件的接口類) 3)當你試圖讀取其位置嵌入特性文件的屬性文件(步驟1),在創建的對象步驟-1將給予重點<value>${app.config.batch.location}</value> 值現在您可以使用可用的文件讀取器類加載此屬性文件。 4)創建Properties對象並訪問其中的值。注意::如果你的bean的任何初始化都依賴於在第4步讀取的鍵值,那麼手動執行初始化或創建在任何其他類(甚至是Spring的DispactherServlet)之前加載的***自定義類(servlet) 。