spring允许循环依赖怎么配置

avatar
作者
猴君
阅读量:7

在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中的循环依赖问题。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!