我无法在网上找到直接答案。
Spring Boot的yml文件是否“相互继承”?我的意思是,如果我有:
application.yml
有
server:
port: 80
host: foo
只有的和application-profile1.yml
server:
port: 90
因此,如果我以profile1
作为有效个人资料启动Spring Boot,我是否还将server.host
属性设置为foo
?
答案 0 :(得分:6)
是的,application.yml
文件优先于任何application-{profile}.yml
文件。配置文件特定yml文件中的属性将覆盖默认application.yml
文件中的值,并且特定于配置文件的yml文件中不存在的属性将从默认值加载。它适用于.properties
文件以及bootstrap.yml
或bootstrap.properties
。
Spring Boot文档在72.7 Change configuration depending on the environment段中提到它:
在此示例中,默认端口为9000,但如果Spring配置文件'development'处于活动状态,则端口为9001,如果'production'处于活动状态,则为0。
YAML文档按照遇到的顺序合并(以后的值会覆盖之前的值)。
要对属性文件执行相同操作,可以使用
application-${profile}.properties
指定特定于配置文件的值。
答案 1 :(得分:0)
这是我的解决方法。
假设application.yml
:
spring:
profiles: default-server-config
server:
port: 9801
servlet:
context-path: '/ctp'
如果我想使用default-server-config
配置文件,并在我的8080
中使用端口application-dev.yml
application-dev.yml
:
spring:
profiles:
include:
- default-server-config
- dev-config
---
spring:
profiles: dev-config
server:
port: 8080
然后-Dspring.profiles.active=dev