Nacos 配置中心2025.x
文章目录
Nacos 配置中心
一、配置优先级
Spring Boot 加载配置的优先级(从高到低):

1.1 建议
- 敏感信息(密码、密钥)放 Nacos,不放本地 yml
- 固定结构(MyBatis 路径等)可留本地
- 环境差异(端口、数据库地址)放 Nacos + Namespace 隔离
二、依赖版本
| 组件 | 2025.x(当前项目) | 2023.0.x(上一主流版) |
|---|---|---|
| Spring Boot | 4.1.0 | 3.2.x |
| Spring Cloud | 2025.1.2 | 2023.0.x |
| Spring Cloud Alibaba | 2025.1.0.0 | 2023.0.x |
| Nacos Config 依赖 | spring-cloud-starter-alibaba-nacos-config | 相同 |
三、核心概念:Data ID、Group、Namespace

Nacos 通过三个维度组织配置:
Namespace(命名空间)
└── Group(分组)
└── Data ID(配置文件)
3.1 Namespace(命名空间)
实现环境隔离(开发 / 测试 / 生产)或多租户隔离。不同 Namespace 的配置完全隔离,互不可见。
spring:
cloud:
nacos:
config:
namespace: 14976256-c71e-4138-b0b1-6aa2644ef289 # 填 Namespace ID
不配置时,默认使用 Nacos 的 public 命名空间。
3.2 Group(分组)
在 Namespace 内部,对配置做分类管理(按应用、业务模块等)。默认分组为 DEFAULT_GROUP。
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
spring.config.import 中也可单独指定:
spring:
config:
import:
- nacos:product-service-dev-db.properties?group=DB_GROUP&refreshEnabled=true
3.3 Data ID(数据标识)
具体配置文件的唯一标识,通常遵循 {应用名}-{环境}.{后缀} 命名规范。
在 Nacos 控制台创建配置时填写:
| 字段 | 示例 |
|---|---|
| Data ID | product-service-dev.properties |
| Group | DEFAULT_GROUP |
| 格式 | Properties / YAML / JSON 等 |
应用侧通过 spring.config.import 引用:
spring:
config:
import:
- nacos:product-service-dev.properties?group=DEFAULT_GROUP&refreshEnabled=true
四、2025.x 完整接入步骤
4.1 引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
4.2 Nacos 控制台创建配置
| 字段 | 值 |
|---|---|
| Data ID | product-service-dev.properties |
| Group | DEFAULT_GROUP |
| Namespace | dev(14976256-c71e-4138-b0b1-6aa2644ef289) |
| 格式 | Properties |
内容:
server.port=9898
4.3 application.yml
spring:
application:
name: product-service
profiles:
active: dev
config:
import:
- nacos:product-service-dev.properties?group=DEFAULT_GROUP&refreshEnabled=true
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: 14976256-c71e-4138-b0b1-6aa2644ef289
group: DEFAULT_GROUP
4.4 验证
启动 product-service,日志中端口应为 9898(来自 Nacos,而非本地 yml)。
在 Nacos 控制台修改 server.port=9899 并发布,应用会自动刷新(refreshEnabled=true)。
五、近两个版本的依赖与导入差异
5.1 依赖差异
2023.0.x 早期(≤ 2023.0.1.2,bootstrap 模式)
需要两个依赖:
<!-- 1. Nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 2. Bootstrap 引导启动(使用 bootstrap.yml 时必须引入) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
Spring Boot 2.4 之后默认关闭了 bootstrap 机制,要用
bootstrap.yml加载 Nacos 配置,必须额外引入spring-cloud-starter-bootstrap,否则bootstrap.yml不会生效。
2025.1.x 起
只需一个依赖,且禁止使用 bootstrap:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2025.1.x 已明确移除 bootstrap 支持,引入
spring-cloud-starter-bootstrap会导致配置刷新失效。
依赖对比汇总
| 版本 | 依赖数量 | 依赖项 |
|---|---|---|
| 2023.0.x 早期(bootstrap 模式) | 2 个 | nacos-config + spring-cloud-starter-bootstrap |
| 2025.x | 1 个 | nacos-config(禁止 bootstrap) |
5.2 配置导入方式(核心差异)
| 对比项 | 2023.0.x 早期 | 2025.x |
|---|---|---|
| 依赖数量 | 2 个(nacos-config + bootstrap) | 1 个 |
| 推荐方式 | bootstrap.yml + shared-configs | spring.config.import |
| Bootstrap | 必须引入 bootstrap 依赖 | 已移除 |
shared-configs | 可用(对同一 Namespace 下的所有应用生效) | 已移除 |
extension-configs | 可用(对单一服务生效) | 已移除 |
默认加载 {app name}.{ext} | 自动拼接 | 需手动 import |
| 缺少 nacos 导入项 | 不强制报错 | 启动时报错 |
2023.0.x 早期写法(bootstrap 模式,需两个依赖)
bootstrap.yml:
spring:
application:
name: product-service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: dev-namespace-id
shared-configs:
- data-id: common.yaml
group: DEFAULT_GROUP
refresh: true
extension-configs:
- data-id: product-service-ext.yaml
group: DEFAULT_GROUP
refresh: true
旧版会自动加载
{spring.application.name}.{file-extension},配置写在bootstrap.yml,需配合spring-cloud-starter-bootstrap依赖。
2025.x 写法(新,当前项目使用)
application.yml:
spring:
application:
name: product-service
config:
import:
- nacos:product-service-dev.properties?group=DEFAULT_GROUP&refreshEnabled=true
- optional:nacos:common.properties?group=DEFAULT_GROUP&refreshEnabled=true
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: 14976256-c71e-4138-b0b1-6aa2644ef289
group: DEFAULT_GROUP
2025.x 必须在
spring.config.import中显式声明每一条 Nacos 配置,不再自动拼接 Data ID。
启动检测差异
2025.x 引入 spring-cloud-starter-alibaba-nacos-config 后,若 import 中没有 nacos: 条目,启动报错:
The spring.config.import property is missing a nacos: entry
解决方式(三选一):
# 1. 添加 nacos 导入(推荐)
spring.config.import:
- nacos:your-config.properties
# 2. 可选导入,允许不存在
spring.config.import:
- optional:nacos:your-config.properties
# 3. 关闭检测(不推荐)
spring.cloud.nacos.config.import-check.enabled: false
六、spring.config.import 写法大全
6.1 基本格式
[optional:]nacos:{DataId}?group=xxx&refreshEnabled=true
| 部分 | 说明 |
|---|---|
nacos: | 固定前缀 |
optional: | 配置不存在时不报错,应用正常启动 |
{DataId} | Nacos 控制台的 Data ID,如 dev-111、product-service-dev.properties |
group | 分组,默认 DEFAULT_GROUP |
refreshEnabled | 是否动态刷新,默认 true |
6.2 常见示例
spring:
config:
import:
# 必导:不存在则启动失败
- nacos:dev-111?group=DEFAULT_GROUP&refreshEnabled=true
# 可选:不存在则跳过
- optional:nacos:common.properties?group=DEFAULT_GROUP&refreshEnabled=true
# 指定非默认 Group
- nacos:product-service-dev-db.properties?group=DB_GROUP&refreshEnabled=true
# 关闭动态刷新
- nacos:static-config.properties?group=DEFAULT_GROUP&refreshEnabled=false
# 同时导入多个
- nacos:product-service-dev.properties?group=DEFAULT_GROUP&refreshEnabled=true
- nacos:common.properties?group=DEFAULT_GROUP&refreshEnabled=true
6.3 完整 application.yml 示例
spring:
application:
name: product-service
config:
import:
- nacos:product-service-dev.properties?group=DEFAULT_GROUP&refreshEnabled=true
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: 14976256-c71e-4138-b0b1-6aa2644ef289
group: DEFAULT_GROUP
file-extension: properties
Nacos 控制台对应配置内容(Properties 格式):
server.port=9898
datasource.url=jdbc:mysql://localhost:3306/cloud_product
datasource.username=root
datasource.password=247711
七、命名规范
7.1 Data ID 推荐格式
<应用名>-<环境>-<配置类型>.<后缀>
| 示例 | 说明 |
|---|---|
product-service-dev.properties | 商品服务 - 开发环境 - 主配置 |
product-service-prod.properties | 商品服务 - 生产环境 - 主配置 |
order-service-dev-db.properties | 订单服务 - 开发环境 - 数据库配置 |
common-dev.properties | 公共配置 - 开发环境 |
八、环境隔离
为不同环境创建独立 Namespace,dev / prod 配置完全隔离。
application-dev.yml:
spring:
cloud:
nacos:
config:
namespace: 14976256-c71e-4138-b0b1-6aa2644ef289
config:
import:
- nacos:product-service-dev.properties?group=DEFAULT_GROUP&refreshEnabled=true
dev 环境的应用只能读到 dev Namespace 下的配置,与 prod 完全隔离。
九、版本管理
Nacos 控制台提供历史版本功能,每次修改配置都会保留历史记录。
9.1 使用方式
- 进入 Nacos 控制台 → 配置管理 → 配置列表
- 点击目标配置的「历史版本」
- 选择历史版本 → 回滚
9.2 最佳实践
- 修改生产配置前,先在 dev Namespace 验证
- 重要变更在控制台备注修改原因
- 出问题后通过历史版本快速回滚,无需重启应用(配合
refreshEnabled=true可自动生效)
十、总结
| 主题 | 要点 |
|---|---|
| 三维模型 | Namespace 隔离环境 → Group 分类 → Data ID 标识文件 |
| 2023 vs 2025 | 早期 2023 需 2 个依赖(nacos-config + bootstrap);2023.0.1.3+ 和 2025 只需 1 个;导入方式统一为 spring.config.import |
| 命名规范 | Data ID:<应用名>-<环境>-<类型>.properties;配置项:<模块>.<功能>.<属性> |
| 环境隔离 | 不同 Namespace,填 Namespace ID |
| 版本管理 | 控制台历史版本,一键回滚 |
| 高可用 | Nacos 集群 + Nginx,server-addr 逗号分隔 |
| 优先级 | JVM > 环境变量 > Nacos > 本地 yml |
更多推荐



所有评论(0)