SpringCloud ——@RefreshScope
SpringCloud 配置中心帮助我们能动态地刷新应用的配置,只需要通过一个注解 @RefreshScope 即可。
一直以为 @RefreshScope 会重新启动应用,直到同事遇到问题,一起调试后才发现,事实并非如此。
验证过程非常简单,手写几个 ApplicationListener 即可。
@Component
public class CustomApplicationStartedListener implements ApplicationListener<ApplicationStartedEvent> {@Overridepublic void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {// @RefreshScope 修改配置文件后,并不触发该事件,换句话说没有重启应用ConfigurableApplicationContext applicationContext = applicationStartedEvent.getApplicationContext();System.out.println("首次启动:" + applicationContext);Object tjClient = applicationContext.getBean("tjClient");System.out.println("首次启动:" + tjClient);}
@Component
public class CustomContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();Object tjClient = applicationContext.getBean("tjClient");System.out.println(tjClient);}}
应用启动后,刷新Nacos 上的配置文件,上面的两个 Listener 都没有走,只走了下面这个Listener
@Component
public class CustomRefreshScopeRefreshedListener implements ApplicationContextAware, ApplicationListener<RefreshScopeRefreshedEvent> {private ApplicationContext applicationContext;@Overridepublic void onApplicationEvent(RefreshScopeRefreshedEvent refreshScopeRefreshedEvent) {// @RefreshScope 刷新配置文件后,发出了 refreshScopeRefreshedEvent 事件, 而没有出发 ContextRefreshedEvent// 换句话说 applicationContext 仍然是同一个对象System.out.println("刷新Nacos配置文件后:" + applicationContext);// @RefreshScope 注解的对象,刷新后并没有立刻重新创建,而是在首次使用时,才创建,相当于懒加载Object tjClient = applicationContext.getBean("tjClient");System.out.println("刷新Nacos配置文件后:" + tjClient);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}//RefreshScopeRefreshedEvent
}
打印结果也说明了 刷新配置文件时,applicationContext 并没有重建,应用没有重启!!
SpringCloud ——@RefreshScope相关推荐
- SpringCloud Alibaba微服务实战(四) - Nacos Config 配置中心
说在前面 Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.Nacos Config就是一个类似于SpringCloud Config的配置中心. 一.启动N ...
- 原 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/ 本文出自方志朋的博客 转载请标明出处: Spr ...
- springboot2新版springcloud微服务,带你了解不一样的springboot2
sb2.0新版springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin springbo ...
- 深入理解SpringCloud之配置刷新
我们知道在SpringCloud中,当配置变更时,我们通过访问http://xxxx/refresh,可以在不启动服务的情况下获取最新的配置,那么它是如何做到的呢,当我们更改数据库配置并刷新后,如何能 ...
- springcloud(七):配置中心svn示例和refresh
上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...
- 配置SpringCloud Config Client连上Config Server
SpringCloud Config Client实际上就是连接到Config Server的普通应用,前面一篇文章 SpringCloud Config Server搭建 已经介绍了如何搭建一个Co ...
- 白话SpringCloud | 第八章:分布式配置中心的服务化及动态刷新
前言 上一章节,简单介绍了分布式配置中心Spring Cloud Config的使用.同时,我们也遗漏了一些问题,比如如何配置实时生效,当服务端地址变更或者集群部署时,如何指定服务端地址?回想,在服务 ...
- springcloud config 分布式配置中心
一.介绍 1.场景: 微服务系统中,系统多.实例多,如果每个系统都有自己一套配置加载.维护的机制,会导致在生产过程中因为配置问题引发的不必要的沟通成本.故障风险.需要采用分布式配置中心统一管理.统一实 ...
- spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0
2019独角兽企业重金招聘Python工程师标准>>> 读书笔记 spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0 贴码云 https ...
- spring boot pom配置_125 SpringCloud服务配置中心
1. 为什么需要使用配置中心 (1) 常用的配置管理解决方案有哪些缺点? 硬编码:需要修改代码的话繁琐且风险大: 配置写在properties里面,在集群环境下,需要替换和重启: 写在xml文件中,一 ...
最新文章
- RISC-V会被卡吗?那么你觉得C语言会不会被卡? | 包云岗
- QT学习-10/18/2012
- Bitmap的一个简单实现
- SSM(Spring4.x.x+SpringMVC4.x.x+Mybatis3.4.x)框架整合
- GDCM:gdcm::PixelFormat的测试程序
- jsp使用cookie实现记住用户名和密码
- [Intellij] Project Structure 配置说明
- 熊族部落---要邀请码
- C语言---学生奖学金评定系统设计
- java 读取手机sd卡_获取Android手机中SD卡内存信息
- win7下笔记本电脑给手机开热点
- win2003配置apache支持php_asp,Win2003下配置asp+cgi+php+mysql
- 宽带拨号密码查看工具
- 2016都市小说排行版前十推荐
- forestploter包,超赞的森林图绘制新R包
- 通用型系统架构层次图
- 【微服务入门】分布式事务详解及seata的使用
- 星座运势周公解梦带流量主微信小程序源码下载
- 快手上市 CEO写下70万行代码 致敬程序员改变世界
- php征婚段子,婚姻婚礼类阿金短视频脚本段子剧本台词范例抖音快手素材
热门文章
- python playsound播放时关闭_python - 使用playsound模块停止音频 - 堆栈内存溢出
- PolSARpro导入外部极化矩阵数据(以高分三号为例,附格式转化代码)
- 苹果手机屏幕镜像怎么连接电视_创维电视怎么连接手机?图解创维电视连接手机步骤...
- NC63重写导入功能
- Java选择排序(升序和降序)
- Java HTTP 代理服务器
- 从傅里叶级数到拉普拉斯变换
- LoadRunner 快速生成手写脚本
- mysql表结构指哪些_gp数据库查看表结构
- 2021年3月CISSP考试顺利通过,超详细的经验介绍