导语
整套SCA实战项目完整源码已开源上传至Gitee,可直接克隆/下载ZIP使用:
源码仓库地址:gitee.com/xiaoyuancod...
本章是整套专栏开篇入门案例,基于 module-nacos-demo 模块手把手实操,一次性走完 Nacos 服务注册、远端配置读取、配置动态刷新完整流程,跟着操作就能复现全部效果。
技术版本
- JDK 17
- Spring Boot 3.5.0
- Spring Cloud Alibaba 2025.0.0.0
- Nacos 3.0.3
高频面试对比:Nacos vs Eureka
| 对比维度 | Nacos | Eureka |
|---|---|---|
| CAP架构 | 注册中心AP、配置中心CP双模式 | 仅AP架构,优先保证可用性 |
| 核心能力 | 注册中心+配置中心二合一 | 只具备服务注册发现能力 |
| 数据持久化 | 磁盘持久化,重启数据不丢失 | 纯内存存储,重启清空注册列表 |
| 多环境支持 | Namespace+Group原生隔离 | 无原生多环境、分组能力 |
| 灰度流量 | 原生支持权重、灰度发布 | 无内置灰度、负载权重功能 |
| 生态现状 | Spring Cloud Alibaba主流,持续维护 | Netflix组件,官方早已停止迭代 |
面试小结:现在企业微服务基本统一选用 Nacos,一个组件搞定注册中心 + 配置中心,实用性拉满;Eureka 已经停止维护,仅作面试对比了解即可。
模块核心功能
- 整合Nacos Discovery,自动完成服务注册
- 整合Nacos Config,拉取远程yaml配置文件
- 通过
@ConfigurationProperties绑定配置,支持动态刷新
本地实测刷新效果:修改 Nacos 控制台配置并发布,不用重启项目,再次请求接口就能拿到最新配置,非常适配微服务热更新场景。
一、Nacos本地安装启动(学习环境)
适配版本 Nacos 3.0.3
1. 下载安装包
2. 解压后终端进入bin目录单机启动
Mac/Linux:
bash
cd nacos/bin
sh startup.sh -m standalone
Windows CMD:
cmd
cd nacos/bin
startup.cmd -m standalone
3. 学习环境前置配置(必改 conf/application.properties)
打开 conf/application.properties,在末尾添加以下配置
properties
nacos.core.auth.enabled=false
nacos.core.auth.plugin.nacos.token.secret.key=U2VjcmV0S2V5MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODk=
说明:
- enabled=false 关闭安全认证,适合学习环境
- 关闭后,server.identity.key/value 配置无效,可省略
- 只需保留以上 2 行配置即可正常启动
4. 访问控制台
地址:http://127.0.0.1:8080,默认账号密码 nacos/nacos

5. 停止服务
bash
sh shutdown.sh
6. 8080端口冲突处理
修改 conf/application.properties 更改控制台端口
properties
nacos.console.port=8090
说明:启动日志出现 identity.key 相关提示不属于报错,关闭鉴权后不影响任何功能。
二、项目 Maven 依赖 pom.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xiaoyuancode</groupId>
<artifactId>sca-study-demo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>module-nacos-demo</artifactId>
<name>module-nacos-demo</name>
<description>Nacos服务注册+配置中心实战</description>
<dependencies>
<!-- Web基础依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Nacos服务注册发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 配置属性绑定处理器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
三、项目配置 application.yml
yaml
server:
port: 8081
spring:
application:
name: nacos-service-demo
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 注册中心地址
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
config:
import:
- nacos:${spring.application.name}.yaml
四、核心 Java 代码
1. 启动类 NacosApplication.java
java
package com.xiaoyuancode.sca.nacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class,args);
}
}
2. 配置绑定实体 DemoConfig.java
java
package com.xiaoyuancode.sca.nacos.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "demo")
public class DemoConfig {
private String name;
private String version;
private String desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
3. 测试接口控制器 NacosTestController.java
java
package com.xiaoyuancode.sca.nacos.controller;
import com.xiaoyuancode.sca.nacos.config.DemoConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/sca/nacos")
public class NacosTestController {
@Autowired
private DemoConfig demoConfig;
@Value("${spring.application.name}")
private String applicationName;
@GetMapping("/register")
public String testRegister(){
return "服务注册Nacos成功,服务名:" + applicationName;
}
@GetMapping("/config")
public String testConfig(){
System.out.println("demo.name: " + demoConfig.getName());
System.out.println("demo.version: " + demoConfig.getVersion());
System.out.println("demo.desc: " + demoConfig.getDesc());
return demoConfig.getName() + " | " + demoConfig.getVersion() + " | " + demoConfig.getDesc();
}
}
五、本地启动步骤
1. 启动 Nacos,控制台新建 Data Id:nacos-service-demo.yaml
yaml
demo:
name: 测试服务
version: 1.0.0
desc: Nacos配置中心测试


2. IDE运行 NacosApplication 启动项目
启动成功后,打开 Nacos 控制台服务管理 - 服务列表,能查到 nacos-service-demo 代表服务注册成功。
六、接口测试
Windows10/Win11自带curl直接复制命令执行;Win7老旧系统直接浏览器粘贴地址即可。
bash
# 验证服务注册功能
curl http://localhost:8081/sca/nacos/register
# 读取Nacos远端配置
curl http://localhost:8081/sca/nacos/config

七、实操踩坑总结
- SpringBoot3 不会自动补全配置文件后缀,Nacos 的 Data Id 必须完整写
xxx.yaml,否则读取不到配置 - 后续要被 OpenFeign 远程调用的服务,不能省略
spring.cloud.nacos.discovery注册配置 @ConfigurationProperties绑定前缀,必须和 Nacos 配置顶层 key 完全一致,否则字段注入为 null
小结
本章完整走完 Nacos 本地部署、项目整合全流程,落地服务注册、远程配置、动态刷新三大核心能力,同时梳理面试高频的 Nacos 与 Eureka 核心差异。 下一章:module-nacos-env-demo Nacos 多环境隔离实战。
作者简介
刘晓媛 | XiaoYuanCode
资深全栈开发,具备丰富前后端一体化业务系统落地经验。现阶段主攻 Java 微服务与 Spring AI,分享个人学习复盘与 RAG 工程化落地方案,所有案例均本地验证,配套代码可直接复用。