问题引入:以下配置,springboot项目启动后会加载nacos的哪些配置文件?
spring:
application:
# 应用名称
name: cacsiot-tsbms
boot:
admin:
client:
url: http://localhost:8989
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 192.168.0.200:8850
# 命名空间
namespace: ${spring.profiles.active}
config:
# 配置中心地址
server-addr: 192.168.0.200:8850
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application.${spring.cloud.nacos.config.file-extension}
# 命名空间
namespace: ${spring.profiles.active}
配置解析
1.应用基本信息
- 应用名称:cacsiot-tsbms
- 激活的 Profile:dev(通过 spring.profiles.active 指定)
2.Nacos 配置
- Nacos 服务器地址:192.168.0.200:8850
- 命名空间:${spring.profiles.active},即 dev
- 配置文件格式:yml
- 共享配置: application.yml(通过 shared-configs 指定)
加载的 Nacos 配置文件
(1)共享配置文件
- 文件名称:application.yml
- 加载规则:
- 通过 shared-configs 指定。
- 加载时,dataId 为 application,group 为
DEFAULT_GROUP(未指定 group 时默认使用 DEFAULT_GROUP),file-extension 为 yml。
- 完整路径: dataId:application group:DEFAULT_GROUP namespace:dev
(2)服务特定配置文件
- 文件名称:cacsiot-tsbms.yml(根据 spring.application.name 和 file-extension
拼接) - 加载规则:
-
默认情况下,Spring Cloud Nacos 会加载与 spring.application.name 同名的配置文件。
-
dataId 为 cacsiot-tsbms,group 为 DEFAULT_GROUP,file-extension 为 yml。
-
- 完整路径:
- dataId:cacsiot-tsbms
- group:DEFAULT_GROUP
- namespace:dev
(3)Profile 特定配置文件(如果存在)
-
文件名称:cacsiot-tsbms-dev.yml
-
加载规则: 如果 Nacos 配置中心存在与 spring.application.name 和激活的 Profile
对应的配置文件,则会加载。 dataId 为 cacsiot-tsbms-dev,group 为
DEFAULT_GROUP,file-extension 为 yml。 -
完整路径:
- dataId:cacsiot-tsbms-dev
- group:DEFAULT_GROUP
- namespace:dev
加载顺序与优先级
- 共享配置文件:application.yml
- 服务特定配置文件:cacsiot-tsbms.yml
- Profile 特定配置文件(如果存在):cacsiot-tsbms-dev.yml
优先级:后加载的配置会覆盖先加载的配置。例如,cacsiot-tsbms-dev.yml 中的配置会覆盖 cacsiot-tsbms.yml 和 application.yml 中的同名配置。
总结
项目启动后,会按照以下顺序从 Nacos 配置中心加载配置文件:
注意事项:
- 确保 Nacos 配置中心中存在上述配置文件,否则会导致配置加载失败。
- 如果 cacsiot-tsbms-dev.yml 不存在,则不会加载该配置文件。
补充说明
spring.profiles.active 配置
1、配置名称
- 配置项:spring.profiles.active
- 作用:用于指定当前激活的 Spring Profile(环境配置)。
2、工作原理
-
Profile 机制:Spring Boot 通过 Profile 机制实现配置的动态加载。
-
配置加载顺序:
1、加载默认配置(如 application.yml 或 application.properties)。
2、根据 spring.profiles.active 的值,加载对应的 Profile 配置(如 application-dev.yml)。
3、如果存在多个 Profile 配置,后加载的会覆盖先加载的。 -
配置文件命名规则:
1、默认配置文件:application.yml 或 application.properties。
2、Profile 特定配置文件:application-{profile}.yml 或 application-{profile}.properties。