SpringBoot Nacos实现自动刷新
作者:我有一只肥螳螂 发布时间:2023-09-16 04:17:09
背景
SpringBoot 版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Nacos 版本
<dependencies>
...
<!--nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
</dependencies>
Spring-Cloud 版本
spring-cloud-alibaba依赖,能对nacos进行版本管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
application.yml 配置
server-addr:nacos地址
namespace:命名空间,即 id
group:标识分组
file-extension:文件后缀名
spring:
cloud:
nacos:
config:
server-addr: http://xxx.com
namespace: name
group: name
file-extension: yml
现象
application.yml 配置 myvalue 的值
myvalue: myvalue-test
接口类引用 myvalue
@RestController
@Slf4j
public class TestController extends BaseController {
@Value("${myvalue}")
private String myvalue;
@ApiOperation(value = "测试", notes = "测试value")
@GetMapping(value = "/test/feng/test")
NjcResponseEntity testValue() {
log.info( myvalue);
return super.success("查询", myvalue);
}
}
在线修 nacos 上 myvalue 的值
后台可以看到 myvalue 已被修改
2023-01-10 10:56:03.402 WARN [TID: N/A] c.a.c.n.c.NacosPropertySourceBuilder: Ignore the empty nacos configuration and get it based on dataId[pm] & group[pm]
2023-01-10 10:56:03.407 WARN [TID: N/A] c.a.c.n.c.NacosPropertySourceBuilder: Ignore the empty nacos configuration and get it based on dataId[pm.yml] & group[pm]
2023-01-10 10:56:03.415 INFO [TID: N/A] o.s.c.b.c.PropertySourceBootstrapConfiguration: Located property source: [BootstrapPropertySource {name='bootstrapProperties-pm-feng.yml,pm'}, BootstrapPropertySource {name='bootstrapProperties-pm.yml,pm'}, BootstrapPropertySource {name='bootstrapProperties-pm,pm'}]
2023-01-10 10:56:03.417 INFO [TID: N/A] o.s.boot.SpringApplication: The following 1 profile is active: "feng"
2023-01-10 10:56:03.425 INFO [TID: N/A] o.s.boot.SpringApplication: Started application in 0.227 seconds (JVM running for 38.127)
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
2023-01-10 10:56:03.508 INFO [TID: N/A] o.s.c.e.event.RefreshEventListener: Refresh keys changed: [myvalue]
但通过接口获取 myvalue 的值并没有改变
优化
如何修改为自动更新,加上注解 @RefreshScope 即可
@RestController
@Slf4j
@RefreshScope
public class TestController extends BaseController {
@Value("${myvalue}")
private String myvalue;
@ApiOperation(value = "测试", notes = "测试value")
@GetMapping(value = "/test/feng/test")
NjcResponseEntity testValue() {
log.info( myvalue);
return super.success("查询", myvalue);
}
}
来源:https://blog.csdn.net/weixin_42555971/article/details/128625639


猜你喜欢
- 基于比较的排序算法基本原理及Java实现1. 七大基于比较的排序-总览1.1常见基于比较的排序分类1.2时间复杂度,空间复杂度以及稳定性。稳
- 项目中需要判断传入的日期是否在未来的一年以内,百度了一下网上没有找到好的方式,写了,方便自己和他人:int datecompareAfter
- 我有以下课程public class ModInfo : IEquatable<ModInfo>{ public int ID
- 本文实例讲述了C#判断当前程序是否通过管理员运行的方法。分享给大家供大家参考。具体实现代码如下:public bool IsAdminist
- 之前在做分页时,很多朋友都是用Jquery分页插件,之前我就用的jquery.paper,有需要的朋友可以联系我,接下来小编给大家分享用Jq
- SqlMapConfig.xml的约束,也就是Mybatis主配置文件的约束<?xml version="1.0"
- Android利用爬虫实现模拟登录的实现实例为了用手机登录校网时不用一遍一遍的输入账号密码,于是决定用爬虫抓取学校登录界面,然后模拟填写本次
- 一:SparkSQL1.SparkSQL简介Spark SQL是Spark的一个模块,用于处理结构化的数据,它提供了一个数据抽象DataFr
- 一、C# Thread类的基本用法通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可
- 线程组线程组可以批量管理线程和线程组对象。一级关联例子如下,建立一级关联。public class MyThread43 implement
- 为了防止用户或者测试MM疯狂的点击某个button,写个方法防止按钮连续点击。具体实例代码如下所示:public class B
- Java 最初版本只为常用的数据结构提供了很少的一组类:Vector、Stack、Hashtable、BitSet 与 Enumeratio
- 一、Java中锁的概念自旋锁:是指当一个线程获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能被成功获取,
- 原理很简单,利用Path画一个图,然后用动画进行播放,播放时间由依赖属性输入赋值与控件内部维护的一个计时器进行控制。控件基本是玩具,无法作为
- Spring Boot中可以在配置文件中直接进行数据库配置,spring.datasource.username= rootspring.d
- 目前html5发展非常迅速,很多native app都会嵌入到网页中,以此来适用多变的市场需求。但是android的webview默认支持的
- 引言 基于生成图片实现了一个手机号转图片的需求。 内容也很简单,直接
- 一、内部类的概念在 Java 中,可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。内部类也是封装的一种体现。p
- 方法一: IDictionaryEnumerator enumerator = thProduct.GetEn
- 目录对zygote的理解作用启动流程启动入口脚本讲解启动过程App_main::mainAndroidRuntime::start对zygo