The dependencies of some of the beans in the application context form a cycle:
DDingApprovalProcessController (field private com.hici.mes.dding.service.DDingApprovalProcessService com.dding.controller.DDingApprovalProcessController.dDingApprovalProcessService)
��
DDingApprovalProcessServiceImpl (field private com.pro.service.IProProductionBackService com.dding.service.impl.DDingApprovalProcessServiceImpl.proProductionBackService)
��
proProductionBackServiceImpl (field private com.wm.service.IWmItemRecptService com.pro.service.impl.ProProductionBackServiceImpl.wmItemRecptService)
��
wmItemRecptServiceImpl (field private com.qc.service.IQcIqcInspectionService com.wm.service.impl.WmItemRecptServiceImpl.iqcService)
��������������
| qcIqcInspectionServiceImpl (field private com.qc.service.IQcIqcService com.qc.service.impl.QcIqcInspectionServiceImpl.qcIqcService)
�� ��
| qcIqcServiceImpl (field private com.qc.service.IQcIqcInspectionService com.qc.service.impl.QcIqcServiceImpl.qcIqcInspectionService)
��������������
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.
13:48:52.848 [Thread-5] WARN c.a.n.c.n.NotifyCenter - [shutdown,136] - [NotifyCenter] Start destroying Publisher
翻译
应用程序上下文中某些bean的依赖关系形成了一个循环:
DDingApprovalProcessController(字段私有com。dding.service.DDingApprovalProcessService com.hici.mes添加控制器.DdingApprovelProcessController.DdingApprivalProcessService)
��
DDingApprovalProcessServiceImpl(字段私有com.pro.service.IProProductionBackService com.dding.service.impl.DDingApprovalProcessServiceImpl.proProductionBackService)
��
proProductionBackServiceImpl(字段私有com.wm.service.IWmItemRecptService.com.pro.service.impl.proProductionBackServiceImpl.wmItemRecptService)
��
wmItemRecptServiceImpl(字段私有com.qc.service.IQcIqcInspectionService com.wm.service.impl.wmItemRecptServiceImpl.iqsService)
��������������
|qcIqcInspectionServiceImpl(字段私有com.qc.service.IQcIqcService.com.qc.service.impl.QcIqcExaminationServiceImpl.qcIqcService)
�� ��
|qcIqcServiceImpl(字段私有com.qc.service.IQcIqcInspectionService com.qc.seervice.impl.QcIqcServicesImpl.qcIqcInspectionService)
��������������
行动:
不鼓励依赖循环引用,默认情况下是禁止的。更新您的应用程序以消除bean之间的依赖循环。作为最后的手段,可以通过将spring.main.allow-circular-references设置为true来自动打破循环。
13:48:52.848[线程-5]警告c.a.n.c.n.NotifyCenter-[关机,136]-[通知中心]开始销毁发布服务器
解决方案:
循环依赖是指两个或多个Bean相互依赖,形成一个闭环。例如,假设有两个Bean,Bean A和Bean B:
Bean A依赖于Bean B
Bean B依赖于Bean A
这种依赖关系就形成了一个循环,导致Spring容器在初始化Bean时无法确定哪个Bean应先创建。
1.可以使用@Lazy注解来延迟Bean的初始化,从而避免循环依赖
2.使用代理对象也是解决循环依赖的一种方法。Spring AOP(面向切面编程)通过动态代理机制创建Bean的代理对象,可以在一定程度上缓解循环依赖的问题。