nacos动态更新配置RefreshScope注解后取值为null

2023-11-13

首先排除版本问题。

如果在controller类上面直接加@RefreshScope注解,会导致name值为null,count值也为null。

@Slf4j
@RestController
@RequestMapping("api")
@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
public class HelloController {
    private AtomicInteger count = new AtomicInteger(0);

    @Value("${spring.name}")
    String name;

    @GetMapping("hi")
    private String sayHi() {
        log.info("{} 第{}次进来了.", LocalDateTime.now(),  count.addAndGet(1));
        return "hi springboot addmin " + LocalDateTime.now()+"  name===="+name;
    }
}

这是因为:

这个注解的proxyMode默认值是ScopedProxyMode.TARGET_CLASS,这个代理模式使用的是CGLIB方式。如果@RefreshScope使用在@Controller(不止这一个)标记的类上就会出现注入null值的问题。@RefreshScope只要是用在其他会被spring使用CGLIB代理的类上就会出问题。原因是@RefreshScope默认使用CGLIB代理,而目标类又是被CGLIB代理过的,这样就被代理了两次,第二次也就是@RefreshScope代理的时候会出现属性丢失的问题。(出处:http://www.ifx666.cn/index/article/fb7361aa4d134b0ea8c7621641a4f06b.html

解决办法:

第一种(推荐):

新建实体类,将所有需要动态刷新的值都放入这个实体类,将@RefreshScope注解放在这个实体类上面,其他地方调用该类的get方法获取值。

第二种:

修改为@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)模式,不建议这样用,因为使用RefreshScope刷新时会注销该实例重新生成,这样会导致全局变量中存储的某些内容会丢失,例如上面代码中count值自动刷新后会重新归零。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nacos动态更新配置RefreshScope注解后取值为null 的相关文章

  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐

  • python数组处理方法

    一 数组对象的属性 数组的大小 元素个数 array size 数组的维度 array ndim 数组元素的数据类型 array dtype 数组的形状 array shape 数组中每个元素占用的内存空间 array itemsize 数
  • 模拟电路设计(31)---功率放大器简介

    在电子设备中 放大器的末级通常要带动一定的负载 例如 使扬声器发出洪亮的声音 推动电动机旋转 将微弱的无线电信号发射出去等 为了达到以上要求 末级电路不但要求能输出较大幅度的电压 同时还要求输出较大幅度的电流 即要求放大器能向负载输出足够大
  • tensorflow2.0手势识别出错记录

    1 TypeError len is not well defined for symbolic Tensors packed 2 0 Please call x shape rather than len x for shape info
  • css的浮动及高度塌陷

    一 高度塌陷 一般情况 我们的父元素是不设置高度的 让其被内容自动撑开 如果子元素设置浮动了 子元素会脱离文档流 就不能再撑开父元素的高度 从而导致父元素的高度丢失 导致页面布局的混乱 这就是高度塌陷问题 这个问题也必须要解决 解决高度塌陷
  • 小贷、p2p项目上线的基本流程

    一套成熟的流程 我可以简单地介绍一下 目前在服务项目筛选阶段 我们是有多个部门来协同完成的 相关理财服务项目设计部门会把接收和遴选后的各类型投资服务进行初选 我们财富风险管理部是对初选后的服务项目进行第二次筛选 再由公司核心管理层组成的风险
  • 5.1-操作系统的状态机模型

    复习 并发 就这么 讲完了 理解的方式 玩一玩 示例代码 本次课回答的问题 Q 听说操作系统也是程序 那到底是鸡生蛋还是蛋生鸡 本次课主要内容 软件和硬件的桥梁 操作系统的加载和初始化 AbstractMachine 代码导读 一 自己动手
  • 我们该如何进行bug总结?

    前言 在项目过程中 测试同学会发现大量的bug 但同时也不可避免的会存在一些遗漏的bug 为了能够减少遗漏bug的现象 我们需要针对遗漏的问题进行总结 从教训中积累经验 总结方法 从而提高测试的覆盖度 提升产品的整体质量 我们该如何进行bu
  • Python教材课后简答题答案

    简答题答案 第一章 1 Python主要的特点有代码简洁 语法优美 简单易学 开源 可移植 类库丰富 中文支持等 2 Python中可以使用关键字import导入一个或多个模块 也可以使用from 模块名 import 导入模块中的全部内容
  • VMware Workstation 不支持在此主机上使用虚拟化性能计数器。

    原因 因为VMware15 5以后包含和Hyper v的功能 所以在电脑安装了Hyper V之后 对应的功能则无法使用 解决方法 1 虚拟机中不会再二次虚拟化 需要关闭VMware的虚拟技术器 步骤 虚拟机 设置 处理器 三个全部取消勾选即
  • 文本匹配模型实验报告-text2vec

    文本匹配模型实验报告 text2vec 尽管基于BERT的模型在NLP诸多下游任务中取得了成功 直接从BERT导出的句向量表示往往被约束在一个很小的区域内 表现出很高的相似度 因而难以直接用于文本语义匹配 为解决BERT原生句子表示这种 坍
  • (初级)PHP经典面试题目汇总-沃森建站教程博客

    原文地址 http wosn net 355 html
  • 【华为OD机试】数组去重和排序 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 给定一个乱序的数组 删除所有的重复元素 使得每个元素只出现一次 并且按照出现的次数从高到低进
  • jsp与java的通信_javaEE jsp与servlet之间通信

    html与jsp或者servlet的通信相信大家都会了 就是使用form的get或者post提交即可 ajax异步通信将在后面讲到 但 是jsp与servlet之间怎么通信呢 servlet与jsp的通信 指从servlet中调用jsp 从
  • Centos 7 安装 搭建rabbitMQ Erlang

    Centos 7 安装 搭建rabbitMQ软件配置 Centos7 erlang 20 0 rabbit 3 7 9 配合 Springboot 2 1 5 AMQP 全称Advanced Message Queuing Protocol
  • mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; ERROR 1819

    mysql gt GRANT ALL PRIVILEGES ON TO root IDENTIFIED BY root WITH GRANT OPTION ERROR 1819 HY000 Your password does not sa
  • [知识图谱构建] 二.《Neo4j基础入门》基础学习之创建图数据库节点及关系

    该系列文章主要讲解知识图谱及Neo4j图数据库的用法 本篇文章是作者学习 Neo4j基础入门 书籍的在线笔记 主要讲解Neo4j的基础知识及基本语法 希望大家喜欢 前文 知识图谱构建 一 Neo4j图数据库安装初识及药材供应图谱实例 neo
  • linux目录功能

    Linux 系统目录结构 登录系统后 在当前命令窗口下输入命令 ls 你会看到如下图所示 树状目录结构 以下是对这些目录的解释 bin bin是Binary的缩写 这个目录存放着最经常使用的命令 boot 这里存放的是启动Linux时使用的
  • CANIOT系列车联网透传云网关解决重型卡车远程监控升级问题 云端监控,远程调试和程序上下载

    重卡行业 智能化 革新 不仅开启了重卡智造的新时代 还推动着我国物流运输业升级 重卡智能化科技不仅加快了整个重卡行业的智能化进程 也让卡友们在工作中更加安心 放心 重卡远程在线监控工作 已在多地交通运输局运输管理站主持召开专题会议 对重卡远
  • 前端将页面转换成PNG下载下来

    1 安装 npm install html2canvas save 2 引入 import html2canvas from html2canvas 3 示例 html2canvas document getElementById look
  • nacos动态更新配置RefreshScope注解后取值为null

    首先排除版本问题 如果在controller类上面直接加 RefreshScope注解 会导致name值为null count值也为null Slf4j RestController RequestMapping api RefreshSc