Nacos + Spring Cloud:服务注册与配置中心

发布时间:2026/8/25 15:16:26
Nacos + Spring Cloud:服务注册与配置中心 不同版本不要随意混搭项目已有 Spring Boot 版本时应先查阅 Spring Cloud Alibaba 的版本对应表。示例版本如下组件版本Spring Boot4.0.0Spring Cloud2025.1.0Spring Cloud Alibaba2025.1.0.0Nacos Server3.2.3JDK17 及以上一、启动 Nacos关于Nacos版本的下载安装也有多种方式详细可以参考官网Nacos 概览 | Nacos 官网。推荐使用Docker统一安装管理组件安装过程中如有问题可以评论区留言一起交流学习。本地开发可以用 Docker 下载启动单机版docker run --name nacos-standalone \ -e MODEstandalone \ -e NACOS_AUTH_TOKENVGhpc0lzQVNlY3JldEtleUZvck5hY29zVGhhdElzTG9uZ0Vub3VnaA \ -e NACOS_AUTH_IDENTITY_KEYserverIdentity \ -e NACOS_AUTH_IDENTITY_VALUEsecurity \ -p 8080:8080 \ -p 8848:8848 \ -p 9848:9848 \ -d nacos/nacos-server:v3.2.3启动后访问http://127.0.0.1:8080。首次进入控制台时按页面提示初始化nacos管理员密码。特别注意Nacos会占用8080、8848、9848端口。端口用途8080Nacos 控制台8848客户端与 OpenAPI9848Nacos 客户端 gRPC 通信上面的命令只适合本地验证。生产环境应使用集群、持久化数据库和鉴权并部署在内网不要把 Nacos 直接暴露到公网。二、添加项目依赖在pom.xml中统一管理 Spring Cloud 与 Spring Cloud Alibaba 的版本properties java.version17/java.version spring-cloud.version2025.1.0/spring-cloud.version spring-cloud-alibaba.version2025.1.0.0/spring-cloud-alibaba.version /properties dependencyManagement dependencies dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring-cloud.version}/version typepom/type scopeimport/scope /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependency /dependenciesnacos-discovery负责服务注册与发现nacos-config负责读取配置loadbalancer用服务名调用其他实例。三、配置服务注册与配置中心在application.yml文件中做好配置server:port: 8081spring:application:name: order-serviceconfig:import:- nacos:order-service.yaml?groupDEFAULT_GROUPcloud:nacos:server-addr: ${NACOS_ADDR:127.0.0.1:8848}discovery:group: DEFAULT_GROUPnamespace: ${NACOS_NAMESPACE:}config:namespace: ${NACOS_NAMESPACE:}特别注意容易混淆的名字spring.application.name是注册到 Nacos 的服务名order-service.yaml是配置的 Data IDDEFAULT_GROUP是配置分组。NACOS_NAMESPACE应填写命名空间 ID而不是Nacos控制台中的显示名称。留空表示使用public命名空间。应用入口添加服务发现注解EnableDiscoveryClient SpringBootApplication public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } }启动应用后在 Nacos 控制台的“服务列表”中应能看到order-service。四、读取并动态刷新配置1、在配置管理-配置列表下新建配置2、通过RefreshScope让Value在配置修改后重新取值RefreshScope RestController public class ConfigController { Value(${app.welcome:default value}) private String welcome; GetMapping(/config) public String config() { return welcome; } }访问 http://localhost:8081/config应返回hello world在控制台把app.welcome改为其他值并发布再次访问接口即可看到新值无需重启应用。五、常见问题1、配置没有加载依次检查 Data ID、Group、Namespace 是否完全一致。加载成功后一般会看到如下信息[Nacos Config] Load config[dataIdpj-test.yaml, groupDEFAULT_GROUP] success2、开启鉴权后连接失败在spring.cloud.nacos下配置正确的username和password并确认客户端能够访问8848、9848端口。如果大家在后续使用过程中遇到什么问题的话欢迎留言交流学习