spring boot 集成 nacos 实现服务注册与发现需引入 spring-cloud-starter-alibaba-nacos-discovery 依赖,配置 application.yml 中的 server-addr 和 service name,启动时自动注册;调用方通过 @loadbalanced resttemplate 或 openfeign 按服务名调用,nacos 自动负载均衡解析实例。

在 Spring Boot 中使用 Nacos 实现服务注册与发现,核心是引入 Nacos 客户端依赖、配置 Nacos 服务地址,并通过注解启用服务发现能力。Spring Cloud Alibaba 提供了对 Nacos 的原生支持,集成简单,无需手动写注册逻辑。
添加依赖和启动类配置
确保项目使用 Spring Boot 2.4+ 和 Spring Cloud Alibaba 对应版本(如 2021.1 或 2022.0)。在 pom.xml 中添加:
在启动类上无需额外注解(@EnableDiscoveryClient 在 Spring Cloud 2020+ 已自动启用,可省略)。
配置 Nacos 地址和服务元信息
在 application.yml 中指定 Nacos 服务端地址及当前服务名称:
spring:application:
name: user-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: public # 可选,指定命名空间 ID
group: DEFAULT_GROUP # 可选,默认分组
Nacos 启动后,服务启动时会自动向 127.0.0.1:8848 注册,服务名即 spring.application.name 值。
调用其他服务(服务发现)
使用 LoadBalanced RestTemplate 或 OpenFeign 进行服务间调用:
- 声明带
@LoadBalanced的RestTemplateBean:
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
- 在 Controller 或 Service 中按服务名调用:
Nacos 会自动解析 order-service 为可用实例地址,支持负载均衡(默认轮询)。
验证与常见问题
启动服务后,访问 http://127.0.0.1:8848/nacos,登录控制台,在「服务管理 > 服务列表」中查看服务是否上线。注意以下几点:
- 确保 Nacos 服务正常运行(默认端口 8848),且网络可达
- 检查服务名大小写一致,调用时用的名称必须与
spring.application.name完全匹配 - 若使用 Docker 启动 Nacos,宿主机需配置
server-addr为可访问 IP(如host.docker.internal:8848) - 日志中出现
registering service with nacos表示注册成功
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











