循环依赖问题解决方案

背景,某些情况下会有两个service需要相互引用的情况,大部分情况下一个改为引用mapper可以进行解决,但也有确实就没法解决的情况,比如两个service同时实现了某个接口比如发起和推进流程方法,当流程a需要发起b流程,b流程在某些情况下需要推进a流程时这种相互引用就不可避免了。

解决方案1:继续相互引用(不推荐)

yml添加允许循环引用
spring:
  main:
    allow-circular-references: true

注入时添加@Lazy如:
@Lazy
@Autowired
xxxx

解决方案2:添加个工具类进行中转

@Component
@RequiredArgsConstructor
public class CircularDependenciesUtil {
    private static CircularDependenciesUtil util;
    @PostConstruct //初始化
    public void init() {
        util = this;
    }
    //--------------------------------某些可能循环引用的类---------开始
    private final XXX xxx;
    //--------------------------------某些可能循环引用的类---------结束

    /**
     * @Description: 返回service
     */
    public static XXX getXxx() {
        return util.xxx;
    }

}

方案1最终没避免循环引用,方案2则不再存在循环引用问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

翎墨袅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值