The dependencies of some of the beans in the application context form a cycle:

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.
在这里插入图片描述

报错无法启动程序

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-11-24 19:53:45.000 ERROR 65148 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The dependencies of some of the beans in the application context form a cycle:

┌──->──┐
|  com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration
└──<-──┘


Action:

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.


Process finished with exit code 1

报错原因:
依赖循环引用是不鼓励的,默认情况下是禁止的。更新应用程序以删除bean之间的依赖循环。作为最后的手段,可以通过设置spring.main来自动打破循环。allow-circular-references为true。

application.properties文件中添加以下代码:

# 解决升级springboot2.6 因循环引用导致启动时报错
spring.main.allow-circular-references=true

添加之后程序正常运行
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 一些bean在应用程序上下文中的依赖关系形成了循环依赖:┌──->──┐ | com.github.pagehelper.autoconfigure.pagehelperautoconfiguration ### 回答2: Spring框架为企业级Java应用程序开发提供了一个强大的IoC容器,可以管理对象间的依赖关系。通常,这些依赖关系应该是有向无环图(DAG),即所有依赖关系应该是单向的,不应该形成环路。然而,在某些情况下,一些bean的依赖关系形成了环路,如题目中所示的com.github.pagehelper.autoconfigure.pagehelperautoconfiguration。 这种情况可能发生在以下两种情况下: 1. Bean定义中出现循环依赖 当两个或多个bean相互依赖时,容器会在初始化过程中尝试解析它们之间的依赖关系。如果某个bean依赖于另一个bean,而另一个bean依赖于第一个bean,那么就会形成循环依赖。在这种情况下,Spring框架可以使用构造函数注入或setter方法注入来解决循环依赖问题。然而,如果使用错误的注入方式或不当地使用注解等,则可能导致容器无法解决循环依赖问题,从而出现循环依赖。 2. 外部依赖关系的环路 在某些情况下,bean的依赖关系可能源于外部依赖关系,例如数据库连接池、消息队列或其他外部应用程序。如果这些外部依赖关系存在循环依赖,那么bean的依赖关系也会形成环路。 不管是哪一种情况,出现循环依赖都会导致应用程序无法启动或出现异常。因此,开发人员需要注意依赖关系的正确性,避免出现循环依赖。如果出现循环依赖,可以通过使用构造函数注入或setter方法注入来解决问题。此外,还可以使用Spring提供的各种解决方案和工具来确保依赖关系正确,并增强应用程序的稳定性和可靠性。 ### 回答3: 在Spring应用上下文中,Bean之间的依赖关系很重要。在依赖关系出现循环依赖时,会导致应用上下文无法正确地初始化Bean。这时,我们需要了解一些循环依赖的处理方法。其中,当应用上下文中的某些Bean的依赖关系形成循环依赖时,我们需要使用延迟依赖解决循环依赖问题。 在应用上下文中,Bean之间的依赖关系可以形成一个有向图,如果该图中存在环路,则表明存在循环依赖。在这种情况下,Spring无法通过自动装配来解决依赖冲突。为了解决这个问题,Spring提供了三种循环依赖处理机制:构造器注入、属性注入和方法注入。 对于自动装配的Bean之间的循环依赖,Spring默认使用构造器注入方式来处理。这种方式通过Bean的构造函数参数来解决依赖关系的问题。如果使用了构造器注入方式,则需要保证每个Bean的构造函数的参数中不出现循环依赖。 对于手动注入的Bean之间的循环依赖,可以使用属性注入来解决。这种方式通过setter方法来解决依赖关系的问题。在使用属性注入方式时,需要在Bean的set方法中对依赖进行初始化。 对于属性注入方式无法解决的循环依赖问题,可以使用方法注入来解决。这种方式通过一个FactoryBean来解决依赖关系的问题。在使用方法注入方式时,我们需要定义一个FactoryBean,然后在该Bean中定义一个初始化方法。 总之,当应用上下文中的Bean之间形成循环依赖时,我们需要使用延迟依赖解决循环依赖问题。这需要通过注入方式、构造器、属性或方法等方式来处理循环依赖的问题。Spring提供了不同的机制来解决循环依赖问题,我们可以根据实际情况选择合适的方式来处理循环依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ζZetaζ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值