日供一卒 6.22
nacos
部署
- config 配置文件修改数据库配置
- 建立nacos专用数据库:在 conf 目录下,提供了 MySQL 数据库初始化脚本 nacos-mysql.sql。
- 在bin目录下执行 startup.cmd -m standalone
项目配置
spring.config.import
spring:config:import:-optional:classpath:application-${spring.profiles.active}.yaml# 加载【本地】配置-optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml# 加载【Nacos】的配置optional:classpath:application-${spring.profiles.active}.yaml
来源:从 classpath(即项目的 resources 目录)加载本地配置文件
文件名:根据当前激活的 profile 动态拼接,例如 application-local.yaml
optional: 前缀:表示该配置文件不是必需的,如果文件不存在,应用会正常启动,不会报错
用途:存放本地开发环境的特定配置(如数据库连接、Redis 地址等)optional:nacos:spring.application.name−{spring.application.name}-spring.application.name−{spring.profiles.active}.yaml
来源:从 Nacos 配置中心加载远程配置
Data ID:根据应用名和 profile 动态拼接,例如 iot-server-local.yaml
optional: 前缀:同样是非必需的,Nacos 中没配也不会启动失败
用途:存放需要在配置中心统一管理的配置(如公共配置、动态变更的配置)
应用启动
└── 先读取 bootstrap.yaml / application.yaml(本文件)
└── spring.config.import 机制:
├── ① 加载 classpath:application-local.yaml(本地配置)
└── ② 加载 Nacos: iot-server-local.yaml(远程配置)
└── ③ 合并配置,后加载的配置会覆盖前面的同名配置项
spring.cloud
spring:application:name:demo-applicationcloud:nacos:# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类config:server-addr:127.0.0.1:8848# Nacos 服务器地址namespace:# 使用的 Nacos 的命名空间,默认为 null,表示使用 public 这个默认命名空间group:DEFAULT_GROUP# 使用的 Nacos 配置分组,默认为 DEFAULT_GROUPname:# 使用的 Nacos 配置集的 dataId,默认为 spring.application.namefile-extension:yaml# 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties分别从 Nacos 中加载对应的配置集。同时要注意,优先级是反过来的,即优先级为 {dataIdPrefix}-{profile}.{fileExtension} > {dataIdPrefix}.{fileExtension} > {dataIdPrefix},会加载的 Nacos 配置集的 dataId 为 demo-application 和 demo-application.yaml,并且优先级是 demo-application-dev.yaml>demo-application.yaml > demo-application
