当前位置: 首页 > 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.xdnf.cn/news/1391941.html

相关文章:

  • mysql双机热备(主主模式)
  • Java项目实现【记录系统操作日志】功能
  • 基于FPGA的DDR3读写实验学习
  • 《ArkUI 记账本开发:状态管理与数据持久化实现》
  • el-table合并列实例
  • 光谱相机多层镀膜技术如何提高透过率
  • (二)Python语法基础(下)
  • 响应式编程框架Reactor【2】
  • Redis开发06:使用stackexchange.redis库结合WebAPI对redis进行增删改查
  • Vue3 全面介绍
  • 技术SEO修复ROI最大化:有限资源下的优先排序策略
  • 【笔记】Linux高性能网络详解之DPDK
  • uni-app 常用钩子函数:从场景到实战,掌握开发核心
  • 算法题打卡力扣第169题:多数元素(easy)
  • 单点登录(SSO)前端(Vue2.X)改造
  • MYSQL-索引(上)
  • week5-[二维数组]对角线
  • 平安健康平安芯医AI解析:7×24小时问诊+95%诊断准确率,人文温度短板与医生效能提升引热议
  • DNS域名系统
  • Less嵌套写法
  • 无人机中的坐标系理解:机体坐标系,东北天(NED)坐标系,世界大地(WGS84)坐标系
  • 换公司如何快速切入软件项目工程
  • 在 Ubuntu 24.04 Linux 上安装 Basemark GPU Benchmark 的步骤
  • PCIe 6.0配置与地址空间架构:深入解析设备初始化的核心机制
  • 零知开源——基于STM32F407VET6和ADXL345三轴加速度计的精准运动姿态检测系统
  • Vibe Coding、AI IDE/插件
  • Vue3 + TS + MapboxGL.js 三维地图开发项目
  • 前端缓存问题详解
  • Prometheus+Grafana入门教程:从零搭建云原生服务器监控系统
  • 【论文阅读】SegCLIP:用于高分辨率遥感图像语义分割的多模态视觉语言和快速学习