spring允许循环依赖怎么配置

469
2023/12/30 14:43:22
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Spring中,可以通过以下两种方式解决循环依赖的问题:

  1. 使用构造函数注入:通过在循环依赖的类中使用构造函数注入方式,而不是使用属性注入方式。这样可以在实例化对象时避免循环依赖的问题。

例如,假设有两个类A和B互相依赖:

public class A {
    private B b;

    public A(B b) {
        this.b = b;
    }
}

public class B {
    private A a;

    public B(A a) {
        this.a = a;
    }
}

在配置类中,可以使用@Bean注解来创建实例:

@Configuration
public class AppConfig {
    @Bean
    public A a(B b) {
        return new A(b);
    }

    @Bean
    public B b(A a) {
        return new B(a);
    }
}
  1. 使用@Lazy注解:将循环依赖的Bean设置为延迟初始化,即在需要使用时才创建实例。这样可以避免在实例化对象时出现循环依赖的问题。

例如,假设有两个类A和B互相依赖:

public class A {
    private B b;

    public A(B b) {
        this.b = b;
    }
}

public class B {
    private A a;

    public B(A a) {
        this.a = a;
    }
}

在配置类中,可以使用@Lazy注解来延迟初始化Bean:

@Configuration
public class AppConfig {
    @Bean
    @Lazy
    public A a(B b) {
        return new A(b);
    }

    @Bean
    @Lazy
    public B b(A a) {
        return new B(a);
    }
}

使用以上两种方式可以解决Spring中的循环依赖问题。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: spring中requestbody的用法是什么