Spring 依赖于配置文件特定属性的启动属性

Spring Boot properties that depend on profile-specific properties

我有一个 Spring 引导应用程序,它应该连接到开发和生产环境中的不同服务器,这些服务器上有许多服务 运行。至此,我创建了这样的配置:

application.properties:

server.url.srv1=${server.url.base}/srv1
server.url.srv2=${server.url.base}/srv2
server.url.srv3=${server.url.base}/srv3

申请-dev.properties:

server.url.base=http://192.168.86.17

申请-prod.properties:

server.url.base=https://10.11.12.3

然而,当我用 @Value("${server.url.srv1}") 初始化一个 bean 参数时,我得到一个字符串 "${server.url.base}/srv1" 而不是 "http://192.168.86.17/srv1" 或“https://10.11.12.3/srv1”如预期。

这完全可行吗?如果仅在加载所有配置文件后才解析“${}”引用,应该是这样,但情况似乎并非如此。

我在 Spring site, on Google (which pointed me to an otherwise useful Baeldung site) 和此处搜索了答案,但没有找到与我的特定问题相关的内容。

当您 运行 您的应用程序时,您必须设置特定的 spring-profile 才能获得之前定义的特定属性。

设置这些配置文件的方法有很多种。

Setting Profiles in different ways (JVM, Programmatically, Environment Variable...)

application.properties 中的占位符应该有效。请参考我在您的用例中添加的示例项目,它按预期工作:https://github.com/itsprav/spring-profile-properties-using-placeholder