SpringCloud + Nacos配置文件加载顺序和优先级详解
目录
在微服务架构中,合理地管理和理解配置文件的加载顺序与优先级对于确保应用的稳定性和灵活性至关重要。特别是在使用 Spring Cloud Alibaba Nacos 作为配置中心的场景下,这一点显得尤为重要。本文将基于一个具体的 bootstrap.yml 配置示例,深入探讨这些概念,并介绍如何通过 Nacos 配置实现本地配置的优先级设置。
一、加载顺序与优先级
1. 示例配置
首先,我们看一下示例的 bootstrap.yml
配置:
spring:
application:
name: content-api
cloud:
nacos:
server-addr: 192.168.101.65:8848
discovery:
namespace: dev
group: xuecheng-plus-project
config:
namespace: dev
group: xuecheng-plus-project
file-extension: yaml
refresh-enabled: true
extension-configs:
- data-id: content-service-${spring.profiles.active}.yaml
group: xuecheng-plus-project
refresh: true
shared-configs:
- data-id: swagger-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
- data-id: logging-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
profiles:
active: dev
2. 配置文件分类
在 Spring Cloud Alibaba Nacos
环境中,我们主要遇到以下类型的配置文件:
本地配置文件:
- bootstrap.yml / bootstrap.yaml
- application.yml / application.yaml
Nacos 配置中心的配置文件:
- 共享配置文件 (shared-configs)
- 扩展配置文件 (extension-configs)
3. 加载顺序
- bootstrap.yml / bootstrap.yaml:首先加载,用于配置应用的启动环境。
- Nacos 配置中心的配置文件:
先加载 共享配置文件 (shared-configs)
然后是 扩展配置文件 (extension-configs)
最后是 项目应用名配置文件 (${spring.application.name}.yaml / .properties) - application.yml / application.yaml:在 Nacos 配置加载之后。
4. 优先级
- 项目应用名配置文件:具有最高优先级。
- 扩展配置文件:次之,覆盖共享配置。
- 共享配置文件:优先级低于扩展配置。
- 本地 application.yml / application.yaml:优先级低于所有从 Nacos 加载的配置。
- 本地 bootstrap.yml / bootstrap.yaml:优先级最低。
相同的配置,优先级高的会覆盖优先级低的,bootstrap是作为spring cloud的上下文配置加载的,一般配置nacos和config的注册中心数据,不配置其他数据,配置了其他数据也可能会被覆盖,而nacos和config相关数据则不会被覆盖。
二、本地配置优先的设置
在 Nacos
中,可以通过特定的配置来设置本地配置优先。这可以在 bootstrap.yml
或 application.yml
文件中设置:
spring:
cloud:
config:
override-none: true
当 override-none 设置为 true 时,本地配置文件 (application.yml / application.yaml) 将具有最高的优先级,即使这些配置在 Nacos 中也有定义。这种设置适用于需要在不同环境中覆盖远程配置中心配置的场景。
结论
了解和正确应用 Spring Cloud Alibaba Nacos 中配置文件的加载顺序和优先级,对于确保微服务的正确运行至关重要。此外,通过配置 override-none 为 true,可以灵活地实现本地配置优先的需求,进一步增强了配置管理的灵活性。这些特性使得 Spring Cloud Alibaba Nacos 成为管理微服务配置的强大工具。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_51390969/article/details/135947989
更多推荐
所有评论(0)