gpt4 book ai didi

java - 用于 PropertyPlaceholderConfigurer 的系统属性后缀

转载 作者:行者123 更新时间:2023-12-01 13:37:20 25 4
gpt4 key购买 nike

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

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 提示“未找到名为 'db.url'+${systemEnvironmentVar} 的属性”。

最佳答案

只需使用嵌套表达式,来自真实项目的示例:

<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

关于java - 用于 PropertyPlaceholderConfigurer 的系统属性后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com