Spring关于配置优先级
文章目录
bootstrap和application
- bootstrap 配置文件先于 application 配置文件被加载,会先创建初始化 Bootstrap Context,再创建初始化 Application Context,应用于更早期的配置信息,可以理解为系统配置;
- bootstrap 和 application 共享同一个 Environment,默认情况下,bootstrap 的配置不会被覆盖,而 application 的配置项可以被覆盖(比如被 application-dev 覆盖,或被 java 命令行覆盖)
spring.config.location和spring.config.additional-location
作用都是读取外部的配置文件
spring.config.location
使springboot不会再读取jar包内的配置文件(也就是说resource目录下的spring配置文件全部失效)spring.config.additional-location
则会进行覆盖互补
spring.config.import
作用是导入配置文件,可以是本地也可以是配置中心的
spring.config.import
无法重写覆盖属性
Nacos中shared-configs和extension-configs
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置
- 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置
- 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置
- 通过内部相关规则(应用名、应用名 + Profile)自动生成相关的 Data Id 配置;
- 三种配置优先级:主配置 > 扩展配置(extension-configs) > 共享配置(shared-configs)
- 数组元素对应的下标越⼤,优先级越⾼,高优先级配置将覆盖低优先级配置。