zoukankan      html  css  js  c++  java
  • Springboot循环依赖

    背景

    最近在使用Springboot做项目的时候,遇到了一个循环依赖的 问题。那什么是循环依赖呢,常见的一种情形就是在ServiceA中注入了ServiceB,在ServiceB中也注入了ServiceA。这种情况下,导致Spring在初始化的时候,无法决定先创建哪个Bean,从而导致了报错。

    解决方案

    优化代码

    出现循环依赖,很大的可能性是代码的设计问题,导致了类的方法之间的交叉使用。因此,可以考虑优化代码,将公共的方法抽出来单独封装。

    使用@Lazy注解

    如果没有时间在短时间内重构完成,可以在互相依赖的两个Service上使用@Lazy注解,如下所示

    @Component
    public class ServiceA {
     
        @Autowired
        @Lazy
        private ServiceB serviceB;
    
    }
    

    使用setter注入

    我们还可以使用setter注入。当依赖最终被使用时才进行注入,对当前代码少做修改

    @Component
    public class ServiceA {
     
        private ServiceB serviceB;
     
        @Autowired
        public void setServiceB(ServiceB serviceB) {
            this.serviceB = serviceB;
        }
        
    }
    
  • 相关阅读:
    Mysql如何修改unique key
    centos 编译 安装 protobuf
    EasyNetQ简单使用
    微信发送模板消息
    Python删除开头空格
    代码积累-Common
    sql With(NoLock),With(ReadPast)
    webform 使用log4net配置
    log4net.dll添加报错
    js-小数计算问题
  • 原文地址:https://www.cnblogs.com/junjiang3/p/11100826.html
Copyright © 2011-2022 走看看