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中可以实现非阻塞并发 我们是否应该在特定场景下使用此功能 将这些方法之一与集合一起使用是否有区别或
  • Maven:无法在 OS X 上找到 java.lang 问题

    当我尝试时遇到以下问题mvn clean install显然它无法找到运行时 jar 但我需要做什么 错误日志 ERROR COMPILATION ERROR INFO ERROR Failure executing javac but c
  • Firebase 实时数据库 .info/connected 本应为 True 时为 False

    我有一个 Android 服务 它的调用地址为onCreate FirebaseDatabase database FirebaseDatabase getInstance database getReference info connec
  • 如何为Spring Boot中的所有控制器指定前缀?

    我有控制器映射到 user and order RestController RequestMapping users public class UserController RestController RequestMapping or
  • 匿名类*总是*维护对其封闭实例的引用吗?

    我正在处理一些代码 其中一个对象 foo 正在创建另一个对象 对象 bar 并将其传递给Callable 之后 foo 将返回 bar 然后我希望 foo 变得无法访问 即 可用于 垃圾收集 我最初的想法是创建Callable匿名 例如 c
  • 在名称为 [重复] 的 DispatcherServlet 中未找到带有 URI 的 HTTP 请求的映射...

    这个问题在这里已经有答案了 我已经检查了 stackoverflow 上几乎所有相关文章 但我就是无法解决我的问题 这是代码 网络 xml
  • Java生成范围内不重复的随机数

    我想生成 1 到 4 范围内的随机数 包括 4 这是我的代码 int num r nextInt 4 1 r is instance of Random 但是 我在循环中运行上述代码 并且不想重复随机数 现在发生的事情我经常得到 1 1 1
  • 写入作为 Jar 文件中的资源包含的 Java 属性文件

    有没有办法修改作为资源存储在 Jar 文件中的属性文件中的属性值 这就是我正在尝试处理的场景 我有一个属性文件作为资源存储在我的 Jar 文件中 有一些系统特定的属性 例如路径 我希望能够为我想要运行 Jar 文件的系统更改此设置 最好的解
  • Java Sound可以用来控制系统音量吗?

    Java 声音优惠FloatControl各种声音线路功能的实例 以及MASTER GAIN http docs oracle com javase 7 docs api javax sound sampled FloatControl T
  • 使用 Oracle Wallet 身份验证从 Spring-jdbc 连接到 Oracle DB

    我将 Spring jdbc 与 org apache commons dbcp BasicDataSource 结合使用 使用用户名和密码进行连接 我想使用BasicDataSource 因为我只有一个连接 我有这个代码
  • 如何从 Jackson 中的自定义解串器调用默认解串器

    我在杰克逊的自定义解串器有问题 我想访问默认序列化器来填充我要反序列化的对象 在填充之后 我将做一些自定义的事情 但首先我想使用默认的 Jackson 行为反序列化对象 这是我目前拥有的代码 public class UserEventDe
  • 获取 n 元组中的所有 1-k 元组

    当 n 5 且 k 3 时 以下循环将执行此操作 List
  • 如何使用 Tomcat 启用浏览器缓存静态内容(图像、css、js)?

    如何使用 Tomcat 启用浏览器缓存静态内容 图像 css js 首选的解决方案是编辑 spring MVC 配置文件或 web xml 尝试 改变值
  • 使用枚举变量切换字符串

    我有一个具有不同值的枚举 并且想要切换字符串变量 现在 我在尝试将枚举值转换为字符串 可以用作大小写常量 时遇到了困难 我最好的尝试是将枚举转换为字符串数组 但开关似乎不接受数组值作为大小写常量 IntelliJ 说 需要恒定的表达 Enu
  • 无法在android中使用retrofit发出@Post请求

    我正在学习如何在 android 中使用改造 但是每当我尝试从互联网检索数据时 我的应用程序不会返回任何内容我的响应没有成功 我不知道如何修复当前我正在尝试发布的错误并使用此 URL 检索数据https jsonplaceholder ty
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • 字节流和字符流

    请解释一下什么是字节流和字符流 这些究竟意味着什么 Microsoft Word 文档是面向字节的还是面向字符的 Thanks 流是一种顺序访问文件的方式 字节流逐字节访问文件 字节流适用于任何类型的文件 但不太适合文本文件 例如 如果文件
  • Hibernate SET 元素 order-by 子句

    我想知道 我可以平静地接受以下事实 当 fetch select 时 您可以在映射文件中的 SET 元素上设置 order by 属性 但如果您在创建查询时获取所有内容 这样安全吗 我的意思是 他们将结果放入 HashSet 中 我不认为这
  • 在大画布上滚动

    我需要一些帮助来了解滚动绘制到 Android 画布上的项目的基础知识 假设我想创建一个时间线 其中 0 处的时间是可视化的顶部 并且随着时间的增加 时间线继续呈现在上一个点下方 如果我想在 Android 上渲染它 我知道我可以通过重写
  • 从 Brixton.RC1 开始的 ZuulProxy 未传递授权标头

    从 Spring Cloud 切换时Brixton M5 to Brixton RC1我的 ZuulProxy 不再通过Authorization标头下游到我的代理服务 我的设置中有各种各样的角色 但大多数都相当简单 Authorizati

随机推荐

  • 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