Spring Cloud Alibaba实战01_Nacos入门服务注册与配置中心

导语

整套SCA实战项目完整源码已开源上传至Gitee,可直接克隆/下载ZIP使用:

源码仓库地址:https://gitee.com/xiaoyuancode/sca-study-demo

本章是整套专栏开篇入门案例,基于 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 已经停止维护,仅作面试对比了解即可。

模块核心功能

  1. 整合Nacos Discovery,自动完成服务注册
  2. 整合Nacos Config,拉取远程yaml配置文件
  3. 通过@ConfigurationProperties绑定配置,支持动态刷新

本地实测刷新效果:修改 Nacos 控制台配置并发布,不用重启项目,再次请求接口就能拿到最新配置,非常适配微服务热更新场景。

一、Nacos本地安装启动(学习环境)

适配版本 Nacos 3.0.3

1. 下载安装包

地址:https://github.com/alibaba/nacos/releases/download/3.0.3/nacos-server-3.0.3.zip

2. 解压后终端进入bin目录单机启动

Mac/Linux:

cd nacos/bin
sh startup.sh -m standalone

Windows CMD:

cd nacos/bin
startup.cmd -m standalone

3. 学习环境前置配置(必改 conf/application.properties)

打开 conf/application.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

Nacos控制台登录页面

5. 停止服务

sh shutdown.sh

6. 8080端口冲突处理

修改 conf/application.properties 更改控制台端口

nacos.console.port=8090

说明:启动日志出现 identity.key 相关提示不属于报错,关闭鉴权后不影响任何功能。

二、项目 Maven 依赖 pom.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

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

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

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

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

demo:
  name: 测试服务
  version: 1.0.0
  desc: Nacos配置中心测试

Nacos配置管理

Nacos创建配置文件

2. IDE运行 NacosApplication 启动项目

启动成功后,打开 Nacos 控制台[服务管理 - 服务列表],能查到 nacos-service-demo 代表服务注册成功。

六、接口测试

Windows10/Win11自带curl直接复制命令执行;Win7老旧系统直接浏览器粘贴地址即可。

# 验证服务注册功能
curl http://localhost:8081/sca/nacos/register

# 读取Nacos远端配置
curl http://localhost:8081/sca/nacos/config

01_api_result

七、实操踩坑总结

  1. SpringBoot3 不会自动补全配置文件后缀,Nacos 的 Data Id 必须完整写xxx.yaml,否则读取不到配置
  2. 后续要被 OpenFeign 远程调用的服务,不能省略spring.cloud.nacos.discovery注册配置
  3. @ConfigurationProperties绑定前缀,必须和 Nacos 配置顶层 key 完全一致,否则字段注入为 null

小结

本章完整走完 Nacos 本地部署、项目整合全流程,落地服务注册、远程配置、动态刷新三大核心能力,同时梳理面试高频的 Nacos 与 Eureka 核心差异。

下一章预告:Spring Cloud Alibaba实战02|Nacos 多环境隔离(企业级 Profile + Namespace + Group 三维隔离)

posted @ 2026-06-25 11:55  XiaoYuanCode  阅读(0)  评论(0)    收藏  举报