SpringBoot整合Nacos做配置中心
文章目录
- SpringBoot整合Nacos做配置中心
-
- 一、在Nacos中预置配置文件
-
- 1.1 创建命名空间
- 1.2 创建分组
- 二、目录结构
- 三、pom依赖
- 四、配置Nacos
- 五、提供服务
-
- 5.1 编写Controller接口
- 5.2 启动项目
- 六、验证
-
- 6.1 验证基本功能
- 6.2 验证动态刷新配置
一、在Nacos中预置配置文件
1.1 创建命名空间
命名空间可以被视为一个项目,通常一个项目占用一个命名空间,在这里我们创建一个NACOS_TEST的命名空间。
1.2 创建分组
开发中会有分支的概念,一般而言会有dev(开发)、pro(生产)、test(测试)三个分支。
分支对应到Nacos中就是Group的概念,接下来创建三个Group:
(1)选择对应命名空间
选择刚刚创建好的命名空间:
(2)创建配置文件
注意:这里创建的配置文件,要求和后面创建的项目名称(spring.application.name)是相同的。
(3)克隆配置文件
(4)查看结果
二、目录结构
三、pom依赖
dependencies>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starterartifactId>
dependency>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-webartifactId>
dependency>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-actuatorartifactId>
dependency>
dependency>
groupId>org.springframework.cloudgroupId>
artifactId>spring-cloud-starter-bootstrapartifactId>
dependency>
dependency>
groupId>com.alibaba.cloudgroupId>
artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
dependencies>
四、配置Nacos
创建bootstrap.yaml(注意:bootstrap.yaml的加载优先级是最高的),并编辑该配置文件内容:
spring:
application:
# 与Nacos中配置文件名称相同
name: nacos-separate-client-provider
cloud:
nacos:
config:
# 配置文件地址
server-addr: 192.168.189.41:8848,192.168.189.42:8848,192.168.189.43:8848
# 已经创建好的命名空间,会有一个id
namespace: ae3c836e-931e-4def-b288-cac8278ca947
# 配置文件所在的group
group: dev
# 配置文件的文件类型
file-extension: properties
注意:配置文件的ID是{spring.cloud.nacos.config.fileExtension},且它的group是${spring.cloud.nacos.config.group}。
五、提供服务
5.1 编写Controller接口
@RestController
@RequestMapping(("/nacos"))
@RefreshScope
public class NacosProviderController {
@Value("${name}")
private String name;
@GetMapping("/name")
public String getName() {
return name;
}
}
注意:这里的@RefreshScope注解是用于动态刷新配置的,当修改完配置后,不需要重启项目,即可正常读取修改后的数据。
5.2 启动项目
启动项目,发现项目运行于8082端口,说明读取Nacos配置文件成功:
六、验证
6.1 验证基本功能
访问 http://localhost:8082/nacos/name ,查看结果:
结论:项目正常读取配置中的数据。
6.2 验证动态刷新配置
修改配置文件:
不需要重启项目,直接重新请求接口,查看结果:
结论:配置动态刷新,不需要重启项目。