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

springboot中循环依赖的解决方法-使用反射

  1. 循环依赖问题概述
    1.1 什么是循环依赖
    循环依赖是指两个或多个Bean之间存在相互依赖的关系,形成一个闭环。在Spring容器初始化过程中,如果检测到循环依赖且无法通过三级缓存机制解决,就会抛出BeanCurrentlyInCreationException异常。

解决思路
循环依赖主要是在使用Autowired直接导入service,改变一下思路,并不直接Autowired导入,写一个共同方法,只传入service的名字,就能够获取到对应的service,如果加上参数,就能够实现调用,实际上实现循环调用而不触及循环调用的报警。

共同方法,

	public static Object execute(String targetName) throws ReturnMain {String serviceName = RegistryUtil.getChangeName(targetName);Optional<String> optional = Arrays.stream(applicationContext.getBeanDefinitionNames()).filter(name -> StringUtils.equalsIgnoreCase(name, serviceName + SERVICE_SUFFIX)).findFirst();String serviceBeanName = optional.get();try {IService service = (IService) applicationContext.getBean(serviceBeanName);return 	service.execute();}catch(ReturnMain e) {}finally {CacheUtil.clearKey(CallType.STATIC_CALL.getCacheKey(serviceBeanName));CacheUtil.setData(CallType.VAR_CALL.getCacheKey(serviceBeanName), Boolean.TRUE);}return null;}

调用时传入,

RunServiceHelper.execute("kmzb0010Service");
http://www.dtcms.com/a/356514.html

相关文章:

  • linux mysql数据备份
  • 零基础上手:Cursor + MCP 爬取 YouTube 视频数据
  • 政策技术双轮驱动 | 新一代工业软件供需对接会·顺德站成功举办
  • 深入解析Nginx核心模块
  • npm使用的环境变量及其用法
  • 专业的储存数据的结构:数据库
  • 【开题答辩全过程】以 基于Python的美食点评系统为例,包含答辩的问题和答案
  • iOS混淆工具实战 电商类 App 的数据与交易安全防护
  • Lambda 表达式在 PyQt/PySide 中的应用
  • Python OpenCV图像处理与深度学习:Python OpenCV入门-图像处理基础
  • 什么是 MySQL的主从同步机制?它是如何实现的?
  • 交互设计 | 无人机控制系统的 UI 设计:从人机交互到任务管理
  • Word - Word 查找文本中的特定内容
  • 宜春城区光纤铺设及接口实地调研
  • 宜春城区SDH网图分析
  • 设计模式Books Reading
  • 计算机视觉----opencv(图像轮毂绘制(大小选择,排序,外接图形绘制),轮廓的近似,模板的匹配)
  • mybatis.xml直接读取配置文件(application.yml)中的数据
  • java数据结构--排序
  • 工业相机的类型及不同类型的应用
  • Python 实战:内网渗透中的信息收集自动化脚本(5)
  • 2025.8.29总结
  • MFC视图中绘制图形缩放和滚动条的处理
  • C/C++---预定义常量
  • Fast-LIVO2算法与其他激光雷达-惯性-视觉里程计算法相比有何优势?
  • 【LeetCode 热题 100】62. 不同路径——(解法二)递推
  • Spring Security 传统 web 开发场景下开启 CSRF 防御原理与源码解析
  • “我店 + RWA”来袭:重构商业价值,解锁消费投资新密码
  • 大模型入门学习微调实战:基于PyTorch和Hugging Face电影评价情感分析模型微调全流程(附完整代码)手把手教你做
  • C++基础(④链表反转(链表 + 迭代 / 递归))