春季启动是否有办法合并来自不同配置文件的属性并启动应用程序?
Ex:我的application-local.yml是默认使用的那个,具有以下属性
server:
port: 8080
spring:
profiles: local
propertyA: xxx
propertyB: yyy
现在不必复制本地的所有属性,让我们说像这样的application-QA.yml
server:
port: 8081
spring:
profiles: local
propertyA: xxx
propertyB: zzz
只有端口& propertyB已更新,我可以在下面找到类似内容吗?
应用QA.yml:
server:
port: 8081
propertyB: zzz
最后,我想拥有以下启动我的应用程序的能力
现在我们必须复制端口& propertyB到application-local.yml并启动应用程序以指向QA环境,我想消除它。
注意:./gradlew bootrun -Dspring.profiles.active = QA似乎对我不起作用,因为我需要application-local.yml中的所有属性都在application-QA.yml而不仅仅是我要覆盖的属性。
答案 0 :(得分:3)
您可以使用弹簧配置文件执行此操作。 您可以一起激活多个配置文件,每个配置文件都将读取其他应用程序的属性-..yml
所以你在application-local.yml中设置公共属性,只设置不同的例如application-QA.yml中的端口。
您可以与
一起激活两个配置文件-Dspring.profiles.active=local,QA
答案 1 :(得分:1)
您可以使用spring.config.additional-location
覆盖选定的属性,而不是替换整个默认属性文件。
此属性取自:
org.springframework.boot.context.config.ConfigFileApplicationListener#CONFIG_ADDITIONAL_LOCATION_PROPERTY