Springboot2.x 使用 nacos 实现配置管理
参考
环境
环境 | 版本 | 操作 |
---|---|---|
windows | 10 | |
JDK | 11 | |
Springboot | 2.3.7.RELEASE | |
nacos-config-spring-boot-starter | 0.2.1 | Nacos自2.2.2版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问,同时在控制台中给予提示,提醒用户当前集群未开启鉴权。(2023/12/20) |
nacos | 0.2.1 | 下载 |
介绍
nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
修改数据库配置需要重启服务才能生效(数据库连接池的问题吧)。
本文主要使用的是单机版本下的nacos的配置管理,通过命名空间
、groupId
与dataId
标识区分实现多配置文件/多租户/多环境使用同一个nacos管理后台。比如日常开发分为 dev
、test
、prop
三种步骤,通过设置对应命名空间就可以在单nacos后台管理不同环境下的配置。
nacos 的下载与启动
-
前往git主页下载 nacos https://github.com/alibaba/nacos
-
下载之后解压,
cmd
进入目录nacos-server-2.1.1\nacos\bin
执行命令启动。
注意事项:
- nacos 默认集群模式启动,所以会启动失败,通过指定单机模式来启动。
- JAVA_HOME 系统变量如果没设置的话也会报错,需要设置好系统变量。
startup.cmd -m standalone
-
命令行显示下图输出即表示启动成功
-
访问本地
http://localhost:8848/nacos/#/login
显示登陆界面,默认账号 nacos 密码 nacos
nacos 配置 与 Spring boot 的配置
- 在 nacos 中添加命名空间 xiaqiuchu
- 在 nacos 配置管理->配置列表->xiaqiuchu 命名空间添加 dataId 为 xiaqiuchu 的配置,配置完毕后点击发布即可。
pom.xml
中添加 nacos 依赖项,版本要与下载的 nacos 版本一致
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>
- 启动类追加注解 @NacosPropertySource 或 @NacosPropertySources 注解实现绑定
// groupId 如果是 DEFAULT_GROUP 可以不填,因为默认值就是这个
// 指定单个 dataId
// @NacosPropertySource(dataId = "xiaqiuchu", groupId = "DEFAULT_GROUP", autoRefreshed = true)
// 指定多个 dataId
@NacosPropertySources({
@NacosPropertySource(dataId = "xiaqiuchu", groupId = "DEFAULT_GROUP", autoRefreshed = true),
@NacosPropertySource(dataId = "example", groupId = "DEFAULT_GROUP", autoRefreshed = true)})
@SpringBootApplication
public class NacosDemoApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDemoApplication.class, args);
}
}
- 添加测试控制器,实现 value 获取
package com.xiaqiuchu.nacosdemo.controller;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author xiaqiuchu
* @date 2022/9/3
*/
@RestController
public class IndexController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@GetMapping
public boolean index(){
return useLocalCache;
}
}
- 在配置文件 application.properties 中指定 命名空间ID 与 nacos 的IP与端口。(命名空间ID不是命名空间名称,不要弄混)
# 单机模式下 nacos IP与端口
nacos.config.server-addr=127.0.0.1:8848
# 指定命名空间,默认public
nacos.config.namespace=dfe52df1-eabc-4601-b985-4b8b72d14e13
测试
-
访问
http://localhost:8080/
访问响应结果为true
,说明配置生效
-
nacos 管理界面将配置修改为
useLocalCache=false
并再次访问,配置自动刷新成功
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/16653646.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/16653646.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。