问题

从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循环依赖相关推荐

  1. Spring 是如何解决循环依赖的?

    1.由同事抛的一个问题开始 最近项目组的一个同事遇到了一个问题,问我的意见,一下子引起的我的兴趣,因为这个问题我也是第一次遇到.平时自认为对spring循环依赖问题还是比较了解的,直到遇到这个和后面的 ...

  2. Spring boot的Maven配置依赖

    Spring boot 的 Maven 配置依赖 springboot spring pom maven models 我们通过引用spring-boot-starter-parent,添加sprin ...

  3. 框架源码专题:Spring是如何解决循环依赖的?

    文章目录 1.什么是循环依赖? 2.解决循环依赖思路 3. 使用了三级缓存还有什么问题?怎么解决的? 4. 手写伪代码解决缓存依赖 5. 二级缓存能否解决循环依赖,三级缓存存在的意义 6. Sprin ...

  4. Spring源码分析-循环依赖

    导语   前面提到了实例化Bean其实是一个复杂的过程,而在这个过程中比较难以理解的就是循环依赖的问题,下面就先来看看什么是循环依赖 文章目录 什么是循环依赖? Spring 是怎么解决循环依赖的? ...

  5. Spring三级缓存解决循环依赖

    1. 前言 循环依赖:就是N个类循环(嵌套)引用. 通俗的讲就是N个Bean互相引用对方,最终形成闭环.用一副经典的图示可以表示成这样(A.B.C都代表对象,虚线代表引用关系): 其实可以N=1,也就 ...

  6. 万字长文带你吃透Spring是怎样解决循环依赖的

    在Spring框架中,处理循环依赖一直是一个备受关注的话题.这是因为Spring源代码中为了解决循环依赖问题,进行了大量的处理和优化.同时,循环依赖也是Spring高级面试中的必考问题,回答得好可以成 ...

  7. 【Spring源码:循环依赖】一文弄懂Spring循环依赖

    1. 什么是循坏依赖 很简单,其实就是互相依赖对方,比如,有一个A对象依赖了B对象,B对象又依赖了A对象. // A依赖了B public class A{private B b; }// B依赖了A ...

  8. Spring是如何解决循环依赖的?

    1.案发情况 @Service public class TestService1 {@Autowiredprivate TestService2 testService2;@Asyncpublic ...

  9. spring boot 异常(exception)处理

    spring boot 异常(exception)处理 参考文章: (1)spring boot 异常(exception)处理 (2)https://www.cnblogs.com/jinbuqi/ ...

  10. Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获

    Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...

最新文章

  1. 玩转“网上邻居”之WINS解析(一)
  2. jQuery EasyUI API 中文文档 - 日期框(DateBox)
  3. python递归函数讲解_Python递归函数实例讲解
  4. day36 03-Hibernate检索方式:排序、参数绑定、投影查询
  5. 转载:售前十年,你在第几年
  6. linux下面使用gparted进行格式化
  7. java正则转义_Java 正则表达式 转义字符
  8. 如何查看自己的ubutu系统是32位的还是64位的
  9. 关于C/C++中的“auto”关键字
  10. 理解数据库与数据模型的概念
  11. 搭建CentOS7.6容器镜像
  12. php钩子是啥意思,thinkphp钩子是什么意思
  13. 数据存储技术-专题介绍
  14. 我是如何在自学编程9个月后找到工作的
  15. TinyPNG压缩图片的网站
  16. 独家 | 被大佬纷纷唱衰的AI行业,2018路在何方?
  17. 苹果x为什么总黑屏_苹果X突然黑屏重启怎么回事?教你强制重启方法
  18. 一道技术美术的面试题
  19. 数字电路技术基础(三)
  20. 安卓技术实战01 第一个安卓APP案例

热门文章

  1. 情景分析中的一个例程
  2. oracle ocm查寻,如何查询Oracle 12c OCP , 11g OCP , OCM考试成绩和证书
  3. java 蚁群算法_Java蚁群算法(Ant Colony)求解旅行商问题(TSP)(二)
  4. css元素定位:通过元素的标签或者元素的id、class属性定位
  5. jQuery限定文本框只能输入数字(包含非负整数和非负小数)
  6. 【无标题】pom.xml成了普通黄色图标的xml文件
  7. 今日头条街拍,又到养眼的季节
  8. fedora 安装图形界面
  9. Sketchup 程序自动化(六)颜色、材质贴图
  10. 作坊离工厂究竟有多远 (二)