Yml使用Spring启动配置文件"继承"

tom*_*r.z 10 spring-profiles spring-boot

我在网上找不到直接的答案.

Spring Boot的yml文件是否相互"继承"?我的意思是,如果我有: application.yml哪个

server:
  port: 80
  host: foo
Run Code Online (Sandbox Code Playgroud)

而且application-profile1.yml只有

server:
  port: 90
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用profile1活动配置文件启动Spring Boot ,我是否也将server.host属性设置为foo

Szy*_*iak 8

是的,application.yml文件的优先级高于任何application-{profile}.yml文件。特定于配置文件的yml文件中的属性将覆盖默认application.yml文件中的值,而特定于配置文件的yml文件中不存在的属性将从默认文件中加载。它适用于.properties文件以及bootstrap.ymlbootstrap.properties

Spring Boot文档在72.7更改配置中提到了这一点,具体取决于环境段落:

在此示例中,默认端口为9000,但是如果Spring概要文件“ development”处于活动状态,则该端口为9001,如果“ production”为活动,则其为0。

YAML文档按照它们遇到的顺序进行合并(因此,较新的值将覆盖较早的值)。

要对属性文件执行相同的操作,可以使用application-${profile}.properties指定特定于配置文件的值。