Java PropertyPlaceHolderConfigure中使用的系统属性后缀

Java PropertyPlaceHolderConfigure中使用的系统属性后缀,java,spring,Java,Spring,我在不同的环境中定义数据库属性时遇到问题。属性文件如下所示: db.url-DEV=host1:port:con... db.user-DEV=user1 db.url-PROD=host2:port:con... db.user-PROD=user2 后缀(-DEV,-PROD)是使用系统属性在服务器端设置的。如何配置PropertyPlaceHolderConfigure以检查系统属性以切换到正确的配置?如果未设置系统属性,则必须有默认值 我尝试过类似的方法,但没有成功: ${#{'db

我在不同的环境中定义数据库属性时遇到问题。属性文件如下所示:

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

db.url-PROD=host2:port:con...
db.user-PROD=user2
后缀(-DEV,-PROD)是使用系统属性在服务器端设置的。如何配置PropertyPlaceHolderConfigure以检查系统属性以切换到正确的配置?如果未设置系统属性,则必须有默认值

我尝试过类似的方法,但没有成功:

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

PropertyConfigure说找不到名为“db.url”+${systemEnvironmentVar}的属性。

创建两个包含内容的属性文件
dev.properties
prod.properties

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

这是常见的Spring模式。

只需使用嵌套表达式,例如real project:

<property name="username" value="${${ENV_NAME}database.username}" />
<property name="password" value="${${ENV_NAME}database.password}" /> 
并将propertyPlaceholder配置为使用系统属性覆盖:

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

更多关于这个


但您也可以使用

查看弹簧配置文件。