升级spring boot异常:spring循环依赖
问题
从spring boot 2.2.9升级到2.6.2版本后,项目启动后访问报错
The dependencies of some of the beans in the application context form a cycle.
serviceCollectionIdCacheService
┌─────┐
| serviceProductInfoProviderImpl
↑ ↓
| serviceOfflineProviderImpl
↑ ↓
| serviceProductMappingProviderImpl
└─────┘
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
原因
在2.6.0之前,spring会自动处理循环依赖的问题,2.6.0 以后的版本默认禁止 Bean 之间的循环引用,如果存在循环引用就会启动失败报错。
解决
方案1:
清理循环引用的Bean
1、在字段上使用@Autowired注解,让Spring决定在合适的时机注入。
2、在@Autowired注解上方加上@Lazy注解(延迟加载)
(A—>B—>C—>D 一般在D引用A的@Autowired下加入@Lazy注解即可)
方案2:
it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
也可以暂时跳过,在yml配置中加入
spring:main:allow-circular-references: true
方案3:
在启动中加入也一样
public static void main(String[] args) {SpringApplication sa = new SpringApplication(xx.class);sa.setAllowCircularReferences(Boolean.TRUE);//加入的参数sa.run(args);
}
升级spring boot异常:spring循环依赖相关推荐
- Spring 是如何解决循环依赖的?
1.由同事抛的一个问题开始 最近项目组的一个同事遇到了一个问题,问我的意见,一下子引起的我的兴趣,因为这个问题我也是第一次遇到.平时自认为对spring循环依赖问题还是比较了解的,直到遇到这个和后面的 ...
- Spring boot的Maven配置依赖
Spring boot 的 Maven 配置依赖 springboot spring pom maven models 我们通过引用spring-boot-starter-parent,添加sprin ...
- 框架源码专题:Spring是如何解决循环依赖的?
文章目录 1.什么是循环依赖? 2.解决循环依赖思路 3. 使用了三级缓存还有什么问题?怎么解决的? 4. 手写伪代码解决缓存依赖 5. 二级缓存能否解决循环依赖,三级缓存存在的意义 6. Sprin ...
- Spring源码分析-循环依赖
导语 前面提到了实例化Bean其实是一个复杂的过程,而在这个过程中比较难以理解的就是循环依赖的问题,下面就先来看看什么是循环依赖 文章目录 什么是循环依赖? Spring 是怎么解决循环依赖的? ...
- Spring三级缓存解决循环依赖
1. 前言 循环依赖:就是N个类循环(嵌套)引用. 通俗的讲就是N个Bean互相引用对方,最终形成闭环.用一副经典的图示可以表示成这样(A.B.C都代表对象,虚线代表引用关系): 其实可以N=1,也就 ...
- 万字长文带你吃透Spring是怎样解决循环依赖的
在Spring框架中,处理循环依赖一直是一个备受关注的话题.这是因为Spring源代码中为了解决循环依赖问题,进行了大量的处理和优化.同时,循环依赖也是Spring高级面试中的必考问题,回答得好可以成 ...
- 【Spring源码:循环依赖】一文弄懂Spring循环依赖
1. 什么是循坏依赖 很简单,其实就是互相依赖对方,比如,有一个A对象依赖了B对象,B对象又依赖了A对象. // A依赖了B public class A{private B b; }// B依赖了A ...
- Spring是如何解决循环依赖的?
1.案发情况 @Service public class TestService1 {@Autowiredprivate TestService2 testService2;@Asyncpublic ...
- spring boot 异常(exception)处理
spring boot 异常(exception)处理 参考文章: (1)spring boot 异常(exception)处理 (2)https://www.cnblogs.com/jinbuqi/ ...
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...
最新文章
- 玩转“网上邻居”之WINS解析(一)
- jQuery EasyUI API 中文文档 - 日期框(DateBox)
- python递归函数讲解_Python递归函数实例讲解
- day36 03-Hibernate检索方式:排序、参数绑定、投影查询
- 转载:售前十年,你在第几年
- linux下面使用gparted进行格式化
- java正则转义_Java 正则表达式 转义字符
- 如何查看自己的ubutu系统是32位的还是64位的
- 关于C/C++中的“auto”关键字
- 理解数据库与数据模型的概念
- 搭建CentOS7.6容器镜像
- php钩子是啥意思,thinkphp钩子是什么意思
- 数据存储技术-专题介绍
- 我是如何在自学编程9个月后找到工作的
- TinyPNG压缩图片的网站
- 独家 | 被大佬纷纷唱衰的AI行业,2018路在何方?
- 苹果x为什么总黑屏_苹果X突然黑屏重启怎么回事?教你强制重启方法
- 一道技术美术的面试题
- 数字电路技术基础(三)
- 安卓技术实战01 第一个安卓APP案例
热门文章
- 情景分析中的一个例程
- oracle ocm查寻,如何查询Oracle 12c OCP , 11g OCP , OCM考试成绩和证书
- java 蚁群算法_Java蚁群算法(Ant Colony)求解旅行商问题(TSP)(二)
- css元素定位:通过元素的标签或者元素的id、class属性定位
- jQuery限定文本框只能输入数字(包含非负整数和非负小数)
- 【无标题】pom.xml成了普通黄色图标的xml文件
- 今日头条街拍,又到养眼的季节
- fedora 安装图形界面
- Sketchup 程序自动化(六)颜色、材质贴图
- 作坊离工厂究竟有多远 (二)