spring 循环依赖 出现的问题 以及解决方案

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的代理对象,可以在一定程度上缓解循环依赖的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值