2014-10-28 50 views
2

我有一個與Spring如何處理多個屬性佔位符相關的問題。如何在Spring xml文件中使用多個屬性佔位符

我有這部分代碼:

<context:property-placeholder location="classpath:dir1/${myapp.system.property}.properties"/> 

屬性myapp.system.property是定義的系統屬性。

例如,如果將其定義爲「devsystem」,則會導入devsystem.properties中定義的所有屬性,並可用於下面的代碼中。

現在我想有他的名字由在devsystem.property文件屬性定義的另一個屬性文件:

<context:property-placeholder location="classpath:dir1/${myapp.system.property}.properties"/> 
<context:property-placeholder location="classpath:dir2/myapp-${myapp.environment}.properties"/> 

myapp.environment是在devsystem.properties文件中定義的屬性。

停止工作。 Spring無法解析$ {myapp.environment}並且抱怨找不到文件dir2/myapp - $ {myapp.environment} .properties。

有人可以讓我知道我做錯了什麼,我該如何使這工作?

非常感謝。

+0

不能作爲在該位置僅在系統屬性/環境諮詢性質佔位符不替換佔位符在不同的地點。我建議不要使用自己的屬性來使用彈簧配置文件,或者編寫一個'ApplicationContextInitializer'來加載不同的屬性文件。 – 2014-10-29 07:11:59

回答

2

你可以做這樣的事情

<context:property-placeholder location="classpath:file1.properties,classpath*:project-common.properties,classpath*:project-${spring.profiles.active}.properties"/> 

在我而言,這是一個遺留系統,使屬性文件並沒有一定的標準名稱,但可以肯定,你可以使用通配符來引用您的屬性文件。

<context:property-placeholder location="classpath:*.properties"/> 
1

您可以使用

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>classpath:file1.properties</value> 
     <value>classpath:file2.properties</value> 
    </property> 
</bean> 

或(逗號分隔)

<context:property-placeholder location="classpath:file1.properties,classpath:file2.properties"/> 
相關問題