Spring Boot、Nacos配置文件的优先级

在标准的 SpringBoot 应用中,本地配置加载顺序如下:

  • 本地 bootstrap 配置,先于 application 配置加载。
  • 不带 profile 的配置,先于带 profile 的配置加载。
  • xxx.yaml 先于 xxx.properties 加载。
  • 本地配置先于 nacos 配置中心加载。
  • nacos 配置中心上公有配置先于 nacos 配置中心该服务的私有配置(即与微服务名同名的配置文件)加载。

综上,加载顺序为:

  1. bootstrap.yaml
  2. bootstrap.properties
  3. bootstrap-{profile}.yaml
  4. bootstrap-{profile}.properties
  5. application.yaml
  6. application.properties
  7. application-{profile}.yaml
  8. application-{profile}.properties
  9. nacos 配置中心共享配置(通过 spring.cloud.nacos.config.shared-configs 指定)。
  10. nacos 配置中心该服务配置(通过 spring.cloud.nacos.config.prefix 和spring.cloud.nacos.config.file-extension 指定)。
  11. nacos 配置中心该服务-{profile} 配置(通过 spring.cloud.nacos.config.prefix 和spring.cloud.nacos.config.file-extension、以及 spring.profiles.active 指定)。

因此,配置生效覆盖关系:

  • 对于 key 名相同,后加载会覆盖掉前加载,故而最终为后加载的配置项生效。
  • 对于 key 名不同,则直接生效(会加载,但不会被覆盖)。

注意:不能理解为文件级整体覆盖,而仅是同名 key 会被后加载的键值覆盖。

你可能感兴趣的:(Spring,Boot,spring,boot,后端,java)