当前位置: 首页 > news >正文

Bug:通过反射修改@Autowired注入Bean的字段,明确存在,报错 NoSuchFieldException

【BUG】通过@Autowired注入了一个Bean SeqNo,测试的时候需要修改其中的字段。通过传统的反射,无论如何都拿不到信息,关键是一方面可以通过IDEA跳转,一方面debug也确实能看到这个字段。但是每次调用set方法报错:NoSuchFieldException:dcnNo36。

【问题分析】采用传统反射可能是因为 seqNo 是某个代理类或 AOP 代理对象,导致反射时获取的类与实际的实现类不一致。

Class<?> seqNoClass = seqNo.getClass();
Field field = seqNoClass.getDeclaredField("dcnNo36");
field.setAccessible(true);
field.set(seqNo,"123");

【解决方案】ReflectionUtils.findField 是 Spring 提供的工具方法,它会尝试查找指定名称的字段,无论是公共的、私有的还是继承的字段。

Field field = ReflectionUtils.findField(seqNoClass, "dcnNo36");
http://www.lryc.cn/news/464584.html

相关文章:

  • Vue项目兼容IE11
  • 可以帮助你快速禁用windows自带的防火墙程序defender control,有效解决占用内存大的问题,供大家学习研究参考
  • 2024年9月电子学会Scratch图形化编程等级考试二级真题试卷
  • STL-vector+题目
  • 微服务--Gateway网关--全局Token过滤器【重要】
  • 负载均衡在线判题系统【项目】
  • 重构复杂简单变量之用子类替换类型码
  • 【Nginx系列】Nginx配置超时时间
  • 2024年龙信
  • PyCharm配置Flask开发环境
  • 【人工智能-初级】第2章 机器学习入门:从线性回归开始
  • SPOOLing技术详解,结合实际场景让你了解什么是假脱机技术。
  • 基于SSM汽车零部件加工系统的设计
  • 改进 JavaScript 条件语句,探索可以替代 if...else 的 7 种方式!
  • 全新子比主题7.9.2开心版 子比主题最新版源码
  • Kafka之消费者组与消费者
  • Damn-Vulnerable-Drone:一款针对无人机安全研究与分析的靶机工具
  • 项目模块三:Socket模块
  • Unity-Shader-语义
  • MFC工控项目实例二十四模拟量校正值输入
  • analysis-ik分词器
  • 开源的、基于内存的键值存储数据库redis详细介绍
  • 三种容器 std::vector、std::map、std::unordered_set 的对比分析
  • Nuxt3 SSR 服务端渲染部署 PM2 全流程(Nest.js 同理)
  • 如何轻松使用pip安装Git仓库中的私有Python模块(使用pip和Git仓库发布和安装私有Python模块)
  • 写 R 包教程
  • 【java】数组(超详细总结)
  • @KafkaListener注解
  • 2025年计算机视觉研究进展与应用国际学术会议 (ACVRA 2025)
  • 第二代GPT-SoVITS V2:让声音克隆变得简单