SpringBoot Nacos实现自动刷新

 更新时间:2023年01月14日 09:48:17   作者:我有一只肥螳螂  
这篇文章主要介绍了SpringBoot Nacos实现自动刷新,Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台

背景

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);
    }
}

到此这篇关于SpringBoot Nacos实现自动刷新的文章就介绍到这了,更多相关SpringBoot Nacos刷新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea中开启Run Dashboard 和 快速复制项目并改变端口的方法

    idea中开启Run Dashboard 和 快速复制项目并改变端口的方法

    这篇文章主要介绍了idea中开启Run Dashboard 和 快速复制项目并改变端口的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • SpringBoot快速过滤出一次请求的所有日志的示例代码

    SpringBoot快速过滤出一次请求的所有日志的示例代码

    在现网出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位,本文给大家介绍了SpringBoot如何快速过滤出一次请求的所有日志,文中有相关的代码和示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • 如何准确判断邮件地址是否存在

    如何准确判断邮件地址是否存在

    本文介绍了如何判断邮件地址是否存在的方法,具有很高的使用价值,提高了工作效率
    2015-07-07
  • SpringBoot一个接口多个实现类的调用方式总结

    SpringBoot一个接口多个实现类的调用方式总结

    这篇文章主要介绍了SpringBoot一个接口多个实现类的调用方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • java序列化与反序列化的使用方法汇总

    java序列化与反序列化的使用方法汇总

    序列化是一种对象持久化的手段,普遍应用在网络传输、RMI等场景中,这篇文章主要给大家总结介绍了关于java序列化与反序列化的使用方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • Java接口的作用_动力节点Java学院整理

    Java接口的作用_动力节点Java学院整理

    这篇文章主要介绍了Java接口的作用,涉及到接口的规范相关知识,需要的的朋友参考下
    2017-04-04
  • Java利用WatchService监听文件变化示例

    Java利用WatchService监听文件变化示例

    本篇文章主要介绍了Java利用WatchService监听文件变化示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 学习Java之异常到底该如何捕获和处理

    学习Java之异常到底该如何捕获和处理

    我们知道,Java的异常处理是通过5个关键字来实现的,即try、catch、throw、throws和finally,try catch语句用于捕获并处理异常,但具体该怎么捕获异常,怎么抛出异常,什么时候抛,什么时候捕,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • java调用Hbase报错解决方法

    java调用Hbase报错解决方法

    这篇文章主要为大家介绍了java调用Hbase报错解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Spring高级注解@PropertySource详细解读

    Spring高级注解@PropertySource详细解读

    这篇文章主要介绍了Spring高级注解@PropertySource详细解读,@PropertySource注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析yaml文件,需要的朋友可以参考下
    2023-11-11

最新评论