Java 依赖于配置文件特定属性的Spring引导属性

Java 依赖于配置文件特定属性的Spring引导属性,java,spring,spring-boot,application.properties,spring-boot-configuration,Java,Spring,Spring Boot,Application.properties,Spring Boot Configuration,我有一个springboot应用程序,它应该连接到dev和prod中的不同服务器,在这些服务器上运行许多服务。至此,我创建了如下配置: application.properties: server.url.srv1=${server.url.base}/srv1 server.url.srv2=${server.url.base}/srv2 server.url.srv3=${server.url.base}/srv3 server.url.base=http://192.168.86.17

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

application.properties:

server.url.srv1=${server.url.base}/srv1
server.url.srv2=${server.url.base}/srv2
server.url.srv3=${server.url.base}/srv3
server.url.base=http://192.168.86.17
server.url.base=https://10.11.12.3
application-dev.properties:

server.url.srv1=${server.url.base}/srv1
server.url.srv2=${server.url.base}/srv2
server.url.srv3=${server.url.base}/srv3
server.url.base=http://192.168.86.17
server.url.base=https://10.11.12.3
application-prod.properties:

server.url.srv1=${server.url.base}/srv1
server.url.srv2=${server.url.base}/srv2
server.url.srv3=${server.url.base}/srv3
server.url.base=http://192.168.86.17
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配置文件才能获得前面定义的特定属性

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


应用程序中的占位符。属性应该有效。请参考我在您的用例中添加的示例项目,它按预期工作:

我的问题不是如何选择配置文件。我的问题是,如何在主application.properties文件中根据特定于概要文件的文件中定义的属性配置属性。我在您的项目中玩了一会儿,您是对的,在您的项目中这很有效。如果我没有做傻事,我需要再检查一次……当然,事实证明我是(做了傻事)。我为dev和prod概要文件定义了一个属性,但没有为测试定义属性,所以测试概要文件失败了。这就是我正在测试的个人资料。愚蠢的我。。。