在项目开发过程中,我们经常使用 Nacos 作为配置中心和注册中心。本文章我们就从代码层面研究下 Spring Boot 是如何整合 Nacos 使用的。
Nacos 安装启动
一键傻瓜试安装即可,官网 写的很清楚这里不在赘述。这里以Window环境安装为例。
下载下来,启动 Nacos
将模式改为单机模式。
双击 startup.cmd 等待启动成功
Nacos 相关配置
创建配置 yaml
server: port: 9010 userName: Admin
整合 Nacos 代码
引入pom.xml依赖
需要根据用的 Spring Boot 配对应的 Nacos 版本
方式一:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.2.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.2.RELEASE</version> </dependency>
方式二:
说明:在使用不同 Spring Boot 版本的项目中需要服务注册到外部系统的 Nacos 时,有可能出现 Nacos 版本不兼容, 可尝试方式二对config、discovery中 Nacos 进行exclusions再重新引用。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.3.RELEASE</version> <exclusions> <exclusion> <groupId>com.alibaba.cloud</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.3.RELEASE</version> <exclusions> <exclusion> <groupId>com.alibaba.cloud</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>2.0.0</version> </dependency>
配置 bootstrap.yml
# bootstrap配置文件优先于application配置加载
# 在bootstrap配置文件里设置配置中心,启动时从配置中心拉取对应的application配置文件完成服务启动
# 同时在bootstrap配置文件里设置服务注册中心,实现启动时的服务注册
# spring配置
spring:
main:
# 由于swagger配置类使用了继承,spring必须配置allow-bean-definition-overriding为true
allow-bean-definition-overriding: true
application:
# 服务名
name: your-application-name
cloud:
nacos:
# 配置中心
config:
# 关闭服务配置
enabled: true
# 设置配置文件所属命令空间
namespace: ${NACOS_WORKSPACE:1fa654fd-4927-4dd2-ad62-aa34dcb8b76d}
# 设置配置文件名称 dataId = ${prefix}-${spring.profile.active}.${file-extension}
# 当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId = ${prefix}.${file-extension}
prefix: your-application-name
file-extension: yaml
# 设置配置文件所属组
# group: sa
# 配置中心地址
server-addr: ${NACOS_ADDR:127.0.0.1:8848}
username: ${NACOS_NAME:nacos}
password: ${NACOS_PSW:nacos}
group: ${NACOS_GROUP:DEFAULT_GROUP}
import-check: false
# 服务注册
discovery:
# 关闭服务注册
enabled: true
register-enabled: true
# 服务注册命令空间
namespace: ${NACOS_WORKSPACE:1fa654fd-4927-4dd2-ad62-aa34dcb8b76d}
# # 设置配置文件所属组
# group: sa
# 服务注册地址
server-addr: ${NACOS_ADDR:127.0.0.1:8848}
username: ${NACOS_NAME:nacos}
password: ${NACOS_PSW:nacos}
group: ${NACOS_GROUP:DEFAULT_GROUP}
配置 application.yml
server: port: 9910
开启注册发现 DemoApplication
@EnableDiscoveryClient //开启服务发现客户端 也就是nacos Server的客户端 @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
TestController
@RestController public class TestController { @Value("${userName}") private String userName; @GetMapping("/hello") public String hello() { return "Hello " + userName; } }
测试结果
至此,服务注册和服务发现已经完成了。注意,只能发现在同一个命名空间下和同一个组别下面才可以发现。
标签:SpringBoot,spring,nacos,Nacos,NACOS,整合,alibaba,cloud From: https://www.cnblogs.com/bJydsJ/p/18545066