1

我有一个 Spring Boot 应用程序,它应该连接到 dev 和 prod 中的不同服务器,并且在这些服务器上运行许多服务。至此,我已经创建了这样的配置:

应用程序属性:

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

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

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

我在Spring 站点、Google(它指向一个其他有用的Baeldung 站点)和这里都搜索了答案,但没有发现与我的特定问题相关的内容。

4

2 回答 2

1

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

于 2020-09-02T15:26:40.457 回答
0

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

有很多方法可以设置这些配置文件。

以不同的方式设置配置文件(JVM、以编程方式、环境变量...)

于 2020-09-02T15:08:08.333 回答