Spring Cloud Nacos 配置中心详解:从基础使用到 MyBatis 整合(含多文档配置)

        结合我们之前学的 Nacos 服务注册、Sentinel 熔断等知识,今天聚焦Nacos 配置中心—— 它解决了微服务架构中 “配置分散、环境难区分、无法实时更新” 的核心痛点。本文会从 “为什么需要配置中心” 切入,详细拆解yml 配置与 Nacos 的对应关系(重点)、分类配置方案,再补充 MyBatis 整合的两种连接池方式(德鲁伊 + 自定义),以及 yml 多文档写法,帮我们建立 “配置统一管理” 的完整认知。

1. 先懂核心痛点:为什么需要 Nacos 配置中心?

        在没使用配置中心前,我们的微服务配置存在 3 个致命问题,这也是 Nacos 配置中心的核心价值所在:

痛点 我们的实际困扰 Nacos 的解决方案
配置分散 每个微服务都有自己的application.yml,10 个服务就要改 10 个配置文件,管理混乱 所有配置统一存放在 Nacos,微服务按需拉取,一个地方改全服务生效
环境难区分 开发、测试、生产环境的数据库地址不同,每次部署要手动改配置,容易出错 用 “命名空间 / Group/DataId” 区分环境,启动时指定环境即可,无需改配置文件
无法实时更新 改了配置(如缓存超时时间),必须重启微服务才能生效,影响线上服务可用性 配置修改后 Nacos 主动推送给微服务,配合@RefreshScope注解实现实时生效,无需重启

        生活类比:Nacos 配置中心就像 “公司的行政部”—— 所有员工的考勤规则、福利政策(对应配置)都由行政部统一制定(Nacos 存储),员工(微服务)不用自己记规则,规则更新时行政部会主动通知(实时推送),不用员工重新入职(重启)。

2. Nacos Config 基础使用:从项目搭建到配置拉取

        我们先从基础流程入手,新建ConfigCenter子项目,实现 “从 Nacos 拉取配置”,重点理解yml 配置与 Nacos DataId 的对应关系(核心)。

2.1 步骤 1:新建 ConfigCenter 子项目(父项目下)

  1. 父项目右键→New→Module→Maven,项目名:ConfigCenter

  2. 核心是配置pom.xml,引入 Nacos 配置中心、服务发现、bootstrap 依赖(新版本必需)。

2.2 步骤 2:配置 pom.xml(关键依赖)

 <dependencies>
     <!-- 1. Nacos服务发现依赖(可选,若需注册到Nacos) -->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
 ​
     <!-- 2. Nacos配置中心核心依赖(必需) -->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
 ​
     <!-- 3. Bootstrap依赖(必需!新版本Spring Cloud移除了bootstrap,需手动引入) -->
     <!-- 作用:保证项目启动时先拉取Nacos配置,再加载application.yml -->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-bootstrap</artifactId>
     </dependency>
 ​
     <!-- 4. Web依赖(用于测试接口) -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
 ​
     <!-- 5. FastJSON依赖(返回JSON响应) -->
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>2.0.14</version>
     </dependency>
 </dependencies>

我们的关键提醒spring-cloud-starter-bootstrap绝对不能少!因为 Spring Boot 加载配置的优先级是:bootstrap.yml > application.yml,而 Nacos 配置需要在项目启动初期拉取(否则项目可能因缺少配置启动失败),bootstrap.yml正是负责 “启动初期拉取 Nacos 配置” 的核心。

2.3 步骤 3:配置 yml 文件(bootstrap.yml + application.yml)

        这是最核心的一步 ——bootstrap.yml配置 Nacos 连接信息,决定从 Nacos 拉取哪个配置;application.yml可放本地补充配置(优先级低于 Nacos 配置)。

2.3.1 bootstrap.yml(核心:配置 Nacos 拉取规则)
spring:
   application:
     # 1. 服务名(对应Nacos DataId的prefix部分,默认值)
     name: config-center
   profiles:
     # 2. 当前环境(对应Nacos DataId的spring.profiles.active部分)
     # 启动时可通过-Dspring.profiles.active=test切换环境
     active: dev
   cloud:
     nacos:
       # Nacos服务注册配置(可选,若需注册到Nacos)
       discovery:
         server-addr: 127.0.0.1:8848  # Nacos地址(和注册中心一致)
       # Nacos配置中心核心配置(必需)
       config:
         server-addr: 127.0.0.1:8848  # Nacos配置中心地址(和注册中心一致)
         file-extension: yaml  # 3. 配置文件类型(对应Nacos DataId的file-extension部分)
         # group: DEFAULT_GROUP  # 可选,默认DEFAULT_GROUP,后续分类配置会用到
         # namespace: 760ae4af-1a85-41c7-9db2-44dd58f3f95e  # 可选,默认public,后续分类配置会用到
2.3.2 application.yml(本地补充配置,可选)
 # 本地配置(优先级低于Nacos配置,Nacos配置会覆盖此处相同配置)
 # 一般放无需动态更新的本地配置,如日志级别
 logging:
   level:
     root: info
     com.zh.configcenter: debug

2.4 步骤 4:理解 Nacos DataId 与 yml 的对应关系(重点!)

Nacos 通过DataId唯一标识一个配置文件,其命名规则是:${prefix}-${spring.profiles.active}.${file-extension}

我们用表格明确每个部分与bootstrap.yml的对应关系:

DataId 组成部分 对应 bootstrap.yml 配置项 示例值 说明
prefix spring.application.name config-center 默认是服务名,也可通过spring.cloud.nacos.config.prefix自定义
spring.profiles.active spring.profiles.active dev 当前环境,若为空,DataId 格式变为${prefix}.${file-extension}
file-extension spring.cloud.nacos.config.file-extension yaml 配置文件类型,仅支持yamlproperties

我们的示例对应:根据上面的bootstrap.yml,DataId 最终为:config-center-dev.yaml—— 这是我们后续在 Nacos 中创建配置的 “唯一标识”,必须完全一致

2.5 步骤 5:在 Nacos 创建配置文件

  1. 访问 Nacos 控制台→配置管理→配置列表→新建配置;

  2. 按以下信息填写(严格对应 DataId 规则):

    • Data IDconfig-center-dev.yaml(和我们计算的一致);

    • GroupDEFAULT_GROUP(默认,和 bootstrap.yml 一致);

    • 配置格式YAML(和 file-extension 一致);

    • 配置内容(示例:自定义一个配置项):

      config:
         info: "我是从Nacos配置中心拉取的dev环境配置!"  # 自定义配置项,后续测试用
  3. 点击 “发布”,配置保存到 Nacos。

2.6 步骤 6:测试配置拉取与动态更新

6.1 编写测试 Controller(含动态刷新)
package com.lh.configcenter.controller;
 ​
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 ​
 // 关键:@RefreshScope 开启Nacos配置动态刷新(配置修改后无需重启,实时生效)
 @RefreshScope
 @RestController
 public class ConfigCenterController {
 ​
     // 从Nacos配置中取值:${config.info}对应Nacos中的config.info
     @Value("${config.info}")
     private String configInfo;
 ​
     // 测试接口:返回Nacos拉取的配置
     @GetMapping("/configInfo")
     @ResponseBody
     public JSONObject getConfigInfo() {
         JSONObject ret = new JSONObject();
         ret.put("code", 0);
         ret.put("message", "配置拉取成功");
         ret.put("data", configInfo);  // 返回Nacos中的config.info
         return ret;
     }
 }
6.2 启动项目测试
  1. 启动ConfigCenterApplication主类加@SpringBootApplication@EnableDiscoveryClient);

  2. 访问接口:http://localhost:8080/configInfo(默认端口,若 Nacos 配置了 server.port 会覆盖);

  3. 预期响应:

     {
       "code": 0,
       "message": "配置拉取成功",
       "data": "我是从Nacos配置中心拉取的dev环境配置!"
     }
6.3 测试动态更新
  1. 回到 Nacos 控制台,编辑config-center-dev.yaml,修改config.info为:"我是Nacos修改后的dev配置!"

  2. 点击 “发布”,无需重启ConfigCenter

  3. 再次访问/configInfo,会发现data字段已更新 —— 证明动态刷新生效!

3. Nacos 分类配置:3 种方案区分环境(命名空间 / Group/DataId)

        当项目有多个环境(dev/test/prod)或多个服务时,需要用 Nacos 的 “三维度”(Namespace/Group/DataId)实现配置隔离。我们详细拆解 3 种常用方案:

3.1 方案 1:DataId 方案(最常用,按环境区分 DataId)

核心逻辑:
  • 前提:同一 Namespace(默认 public)、同一 Group(默认 DEFAULT_GROUP);

  • 隔离方式:不同环境用不同 DataId,通过spring.profiles.active切换。

实操步骤:
  1. 在 Nacos 创建 2 个配置(dev/test 环境):

    • DataId1:config-center-dev.yaml(dev 环境,内容:config.info: "dev环境配置");

    • DataId2:config-center-test.yaml(test 环境,内容:config.info: "test环境配置");

  2. 修改bootstrap.yml的spring.profiles.active:

    • 切换到 dev:active: dev→拉取config-center-dev.yaml

    • 切换到 test:active: test→拉取config-center-test.yaml

  3. 测试:启动项目,访问/configInfo,会看到对应环境的配置。

适用场景:

单团队、少环境(如 dev/test/prod),配置隔离简单直观。

3.2 方案 2:Group 方案(按服务分组,同一环境不同服务)

核心逻辑:
  • 前提:同一 Namespace(默认 public)、同一 DataId;

  • 隔离方式:不同服务 / 模块用不同 Group,通过spring.cloud.nacos.config.group指定。

实操步骤:
  1. 在 Nacos 创建 2 个配置(同一 DataId,不同 Group):

    • DataId:config-center-info.yaml(统一 DataId);

    • Group1:DEV_GROUP(dev 环境服务 A,内容:config.info: "DEV_GROUP配置");

    • Group2:TEST_GROUP(test 环境服务 B,内容:config.info: "TEST_GROUP配置");

  2. 修改bootstrap.yml,指定 Group:

    spring:
       cloud:
         nacos:
           config:
             group: DEV_GROUP  # 拉取DEV_GROUP的config-center-info.yaml
  3. 测试:启动项目,会拉取对应 Group 的配置。

适用场景:

多服务共用同一配置模板(如数据库连接模板),按服务分组隔离。

3.3 方案 3:Namespace 方案(完全隔离,多环境 / 多团队)

核心逻辑:
  • 前提:不同 Namespace(物理隔离),DataId 和 Group 可重复;

  • 隔离方式:每个环境 / 团队对应一个 Namespace,通过spring.cloud.nacos.config.namespace指定(注意:是 Namespace 的ID,不是名称!)。

实操步骤:
  1. 在 Nacos 创建 2 个 Namespace:

    • 新建 Namespace1:名称dev,ID 自动生成(如760ae4af-1a85-41c7-9db2-44dd58f3f95e);

    • 新建 Namespace2:名称test,ID 自动生成(如8d6ba322-4271-430a-9844-31ec3ba614ba);

  2. 在对应 Namespace 下创建配置:

    • devNamespace 下创建config-center-dev.yaml(内容:config.info: "dev Namespace配置");

    • testNamespace 下创建config-center-test.yaml(内容:config.info: "test Namespace配置");

  3. 修改bootstrap.yml,指定 Namespace 的 ID:

     spring:
       cloud:
         nacos:
           config:
             namespace: 760ae4af-1a85-41c7-9db2-44dd58f3f95e  # dev的Namespace ID
  4. 测试:启动项目,会拉取指定 Namespace 下的配置。

我们的易错点提醒:
  • Namespace 用 ID 不用名称:Nacos 控制台显示 “名称”,但配置时需要填 “ID”(创建时自动生成,可在 Namespace 列表查看),填名称会导致配置拉取失败

4. 进阶:Nacos 配置中心整合 MyBatis(2 种连接池方式)

我们在ConfigCenter项目中整合 MyBatis,重点实现 “数据源配置从 Nacos 拉取”,提供两种连接池方案:德鲁伊(Druid)连接池(常用,带监控)和定义 Hikari 连接池(默认,轻量)

4.1 通用准备:在 Nacos 创建数据源配置

首先在 Nacos 创建数据源配置文件,DataId 遵循规则:config-center-datasource.yaml(prefix=config-center,active=datasource,file-extension=yaml)。

Nacos 配置内容(DataId:config-center-datasource.yaml):
# 服务端口(从Nacos拉取,覆盖本地配置)
 server:
   port: 8081
 ​
 # 数据源配置(MyBatis需要)
 spring:
   datasource:
     # 1. 通用配置(两种连接池都需要)
     url: jdbc:mysql://localhost:3306/user_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
     username: root
     password: ${DB_PASSWORD:root}  # 支持占位符:优先取环境变量DB_PASSWORD,没有则用默认值root
     driver-class-name: com.mysql.cj.jdbc.Driver
 ​
     # 2. 德鲁伊连接池专用配置(方案1用,方案2注释)
     druid:
       initial-size: 5  # 初始化连接数
       min-idle: 5       # 最小空闲连接数
       max-active: 20    # 最大活跃连接数
       max-wait: 60000   # 获取连接的最大等待时间(毫秒)
       time-between-eviction-runs-millis: 60000  # 检测间隔时间(毫秒)
       min-evictable-idle-time-millis: 300000    # 连接最小空闲时间(毫秒)
       validation-query: SELECT 1 FROM DUAL      # 验证SQL
       test-while-idle: true                     # 空闲时检测
       test-on-borrow: false                     # 借用时检测
       test-on-return: false                     # 返回时检测
       pool-prepared-statements: true            # 开启预编译
       max-pool-prepared-statement-per-connection-size: 20  # 预编译语句池大小
       filters: stat,wall,log4j2  # 启用监控、防SQL注入、日志(需加对应依赖)
       connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000  # 慢SQL阈值(5秒)
 ​
     # 3. Hikari连接池专用配置(方案2用,方案1注释)
     # hikari:
     #   maximum-pool-size: 20  # 最大连接数
     #   minimum-idle: 5        # 最小空闲连接数
     #   idle-timeout: 300000   # 空闲超时时间(毫秒)
     #   connection-timeout: 20000  # 连接超时时间(毫秒)
     #   pool-name: MyHikariCP  # 连接池名称

4.2 方案 1:整合德鲁伊(Druid)连接池(推荐,带监控)

步骤 1:加德鲁伊与 MyBatis 依赖

ConfigCenterpom.xml中添加:

 <!-- 1. 德鲁伊连接池依赖(带Spring Boot支持) -->
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.2.16</version>
 </dependency>
 ​
 <!-- 2. MySQL驱动(适配MySQL 8.x) -->
 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.32</version>
     <scope>runtime</scope>
 </dependency>
 ​
 <!-- 3. MyBatis Spring Boot Starter -->
 <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>2.3.1</version>
 </dependency>
 ​
 <!-- 4. 德鲁伊监控日志依赖(可选,配合filters: log4j2) -->
 <dependency>
     <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j-core</artifactId>
     <version>2.20.0</version>
 </dependency>
步骤 2:配置德鲁伊数据源(绑定 Nacos 配置)

@ConfigurationProperties自动绑定 Nacos 中的spring.datasource.druid配置,无需手动注入参数:

package com.lh.configcenter.config;
 ​
 import com.alibaba.druid.pool.DruidDataSource;
 import org.mybatis.spring.SqlSessionFactoryBean;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 ​
 import javax.sql.DataSource;
 ​
 @Configuration
 @MapperScan("com.zh.configcenter.mapper")  // 扫描MyBatis的Mapper接口
 public class DruidMyBatisConfig {
 ​
     // 1. 配置德鲁伊数据源:自动绑定Nacos中的spring.datasource.druid配置
     @Bean
     @ConfigurationProperties(prefix = "spring.datasource.druid")  // 前缀对应Nacos配置
     public DataSource druidDataSource() {
         // DruidDataSource会自动加载Nacos中的url、username、password等配置
         return new DruidDataSource();
     }
 ​
     // 2. 配置SqlSessionFactory(MyBatis核心)
     @Bean
     public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {
         SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
         sessionFactory.setDataSource(dataSource);  // 注入德鲁伊数据源
 ​
         // 配置MyBatis核心参数
         org.apache.ibatis.session.Configuration config = new org.apache.ibatis.session.Configuration();
         config.setMapUnderscoreToCamelCase(true);  // 开启驼峰命名转换(user_name→userName)
         config.setCacheEnabled(true);  // 开启二级缓存
         sessionFactory.setConfiguration(config);
 ​
         // 配置Mapper XML文件路径(放在resources/mapper目录下)
         sessionFactory.setMapperLocations(
                 new PathMatchingResourcePatternResolver()
                         .getResources("classpath:mapper/*.xml")
         );
 ​
         return sessionFactory;
     }
 ​
     // 3. 配置事务管理器(可选,支持@Transactional)
     @Bean
     public org.springframework.jdbc.datasource.DataSourceTransactionManager transactionManager(DataSource dataSource) {
         return new org.springframework.jdbc.datasource.DataSourceTransactionManager(dataSource);
     }
 }

4.3 方案 2:自定义 Hikari 连接池(默认,轻量)

Hikari 是 Spring Boot 默认的连接池(轻量、性能好),适合对监控要求不高的场景。

步骤 1:加 Hikari 与 MyBatis 依赖

Hikari 无需额外依赖(Spring Boot 自带),只需加 MySQL 和 MyBatis 依赖(同方案 1 的步骤 1 中的 2、3)。

步骤 2:自定义 Hikari 数据源(手动注入 Nacos 配置)

通过@Value从 Nacos 拉取数据源参数,手动创建 HikariDataSource:

package com.lh.configcenter.config;
 ​
 import com.zaxxer.hikari.HikariDataSource;
 import org.mybatis.spring.SqlSessionFactoryBean;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 ​
 import javax.sql.DataSource;
 ​
 @Configuration
 @MapperScan("com.zh.configcenter.mapper")  // 扫描Mapper接口
 public class HikariMyBatisConfig {
 ​
     // 从Nacos配置中注入数据源参数
     @Value("${spring.datasource.url}")
     private String url;
     @Value("${spring.datasource.username}")
     private String username;
     @Value("${spring.datasource.password}")
     private String password;
     @Value("${spring.datasource.driver-class-name}")
     private String driverClassName;
     // Hikari专用参数(从Nacos拉取,可选)
     @Value("${spring.datasource.hikari.maximum-pool-size:20}")
     private int maxPoolSize;
     @Value("${spring.datasource.hikari.minimum-idle:5}")
     private int minIdle;
 ​
     // 1. 自定义Hikari数据源
     @Bean
     public DataSource hikariDataSource() {
         HikariDataSource dataSource = new HikariDataSource();
         // 手动设置从Nacos拉取的参数
         dataSource.setJdbcUrl(url);
         dataSource.setUsername(username);
         dataSource.setPassword(password);
         dataSource.setDriverClassName(driverClassName);
         // 设置Hikari连接池参数
         dataSource.setMaximumPoolSize(maxPoolSize);
         dataSource.setMinimumIdle(minIdle);
         dataSource.setPoolName("MyHikariCP");  // 连接池名称
         return dataSource;
     }
 ​
     // 2. 配置SqlSessionFactory(和方案1一致)
     @Bean
     public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {
         SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
         sessionFactory.setDataSource(dataSource);
 ​
         org.apache.ibatis.session.Configuration config = new org.apache.ibatis.session.Configuration();
         config.setMapUnderscoreToCamelCase(true);
         config.setCacheEnabled(true);
         sessionFactory.setConfiguration(config);
 ​
         sessionFactory.setMapperLocations(
                 new PathMatchingResourcePatternResolver()
                         .getResources("classpath:mapper/*.xml")
         );
 ​
         return sessionFactory;
     }
 }

4.4 步骤 3:修改 bootstrap.yml,拉取数据源配置

spring:
   application:
     name: config-center
   profiles:
     active: datasource  # 对应Nacos的DataId:config-center-datasource.yaml
   cloud:
     nacos:
       discovery:
         server-addr: 127.0.0.1:8848
       config:
         server-addr: 127.0.0.1:8848
         file-extension: yaml
         # 若用Namespace/Group,需添加对应配置
         # group: DEFAULT_GROUP
         # namespace: 760ae4af-1a85-41c7-9db2-44dd58f3f95e

4.5 测试 MyBatis 整合

  1. 编写 Mapper 接口(如UserMapper.java)和 XML(UserMapper.xml);

  2. 编写 Service 和 Controller 调用 Mapper;

  3. 启动项目,访问接口,若能正常查询数据库,证明整合成功。

5. 实用技巧:yml 多文档配置(用 --- 分隔)

在实际开发中,我们可以在一个bootstrap.yml中用---分隔多个环境的配置,避免创建多个 yml 文件。示例如下:

 # ==================== 公共配置 ====================
 spring:
   application:
     name: config-center
   cloud:
     nacos:
       discovery:
         server-addr: 127.0.0.1:8848
       config:
         server-addr: 127.0.0.1:8848
         file-extension: yaml
 ​
 # ==================== dev环境配置 ====================
 ---
 spring:
   profiles: dev  # 环境标识:dev
   cloud:
     nacos:
       config:
         group: DEFAULT_GROUP
         # namespace: 760ae4af-1a85-41c7-9db2-44dd58f3f95e
 ​
 # ==================== test环境配置 ====================
 ---
 spring:
   profiles: test  # 环境标识:test
   cloud:
     nacos:
       config:
         group: TEST_GROUP
         # namespace: 8d6ba322-4271-430a-9844-31ec3ba614ba
 ​
 # ==================== datasource环境配置 ====================
 ---
 spring:
   profiles: datasource  # 环境标识:datasource
   cloud:
     nacos:
       config:
         group: DEFAULT_GROUP
         # namespace: 760ae4af-1a85-41c7-9db2-44dd58f3f95e

使用方式:启动时通过-Dspring.profiles.active=dev指定环境,例如:

 java -jar ConfigCenter-1.0-SNAPSHOT.jar -Dspring.profiles.active=datasource

6. 重点 & 易错点总结(避坑指南)

重点 / 易错点 我们的解决方案
bootstrap 依赖缺失 新版本 Spring Cloud 必须手动引入spring-cloud-starter-bootstrap,否则无法拉取 Nacos 配置
DataId 命名错误 严格遵循${prefix}-${active}.${extension}规则,确保与 bootstrap.yml 的配置完全一致
Namespace 用名称不用 ID Nacos 配置中namespace需填 “ID”(控制台可查),填名称会导致配置拉取失败
动态刷新不生效 必须在 Controller 上加@RefreshScope注解,且@Value取值的配置项在 Nacos 中存在
德鲁伊监控不生效 确保 Nacos 中配置了spring.datasource.druid.filters=stat,且加了 log4j2 依赖
MyBatis Mapper 扫描不到 在配置类上加@MapperScan("com.zh.configcenter.mapper"),指定 Mapper 接口路径

7. 总结

Nacos 配置中心是微服务架构的 “配置大脑”,核心价值在于 “统一管理、环境隔离、实时更新”。我们需要重点掌握:

  1. yml 与 Nacos 的对应关系:DataId 的命名规则是核心,错一个字符都会导致配置拉取失败;

  2. 分类配置方案:根据团队规模和环境数量选择 DataId/Group/Namespace 方案;

  3. MyBatis 整合:两种连接池方式按需选择,德鲁伊适合需要监控的场景,Hikari 适合轻量场景;

  4. 多文档配置:用---分隔环境,简化配置文件管理。

后续学习中,我们可以进一步探索 Nacos 的 “配置加密”(敏感配置如密码加密存储)、“灰度发布”(配置仅推送给部分服务)等高级功能,让配置管理更安全、灵活。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐