2014-01-16 49 views
0

我在定義不同環境中的數據庫屬性時遇到問題。屬性文件如下所示:用於PropertyPlaceholderConfigurer的系統屬性後綴

db.url-DEV=host1:port:con... 
db.user-DEV=user1 

db.url-PROD=host2:port:con... 
db.user-PROD=user2 

使用系統屬性在服務器端設置後綴(-DEV,-PROD)。我如何配置我的PropertyPlaceholderConfigurer來檢查系統屬性切換到正確的配置?如果系統屬性未設置,則必須有一個默認值。

我已經試過這樣的事情,但沒有奏效:

${#{'db.url'+${systemEnvironmentVar}}} 

的PropertyConfigurer說:「與name屬性 'db.url配置參數' + $ {} systemEnvironmentVar沒有找到。

+2

查看Spring配置文件。 –

回答

1

只需使用嵌套的表達,例如,從真實的項目:

<property name="username" value="${${ENV_NAME}database.username}" /> 
<property name="password" value="${${ENV_NAME}database.password}" /> 

其中ENV_NAME是系統屬性。請注意,您必須在jvm參數中聲明此變量。您還可以添加默認ENV_NAME到您的屬性:

ENV_NAME=dev 

並配置propertyPlaceholder與系統屬性來覆蓋:

<property name="searchSystemEnvironment" value="true" /> 
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 

更多關於這here

但你也可以使用spring profiles

0

創建兩個屬性文件dev.propertiesprod.properties與內容

db.url=host1:port:con... 
db.user=user1 

這是常見的春季模式。