Spring依赖注入循环

时间:2017-02-15 14:36:11

标签: java spring

我遇到依赖注入循环问题。我要求重新设计建议。提前谢谢。

错误描述:应用程序上下文中某些bean的依赖关系形成一个循环:

以下是两个班级

第1类:

@Service
public class MyService {

  private final Product1 finalProduct1;
  private final Product2 finalProduct2;

  @Autowired
  public MyService (Product1 product1, Product2 product2) {
     this.finalProduct1= product1;
     this.finalProduct2= product2;
  }

  public List<String> getMyValues(String someParameter) {
     ...
     return myValues;
  }
  ...
}

第2类:

@Service
public class Product1 {

  @Autowired
  private MyService myService;

  public List<someType> someMethod(String someParameter){
      List<String> myValues = myService.getMyValues(someParameter);
      ...
  }
  ...
} 

2 个答案:

答案 0 :(得分:0)

这是一个依赖循环,因为你已经在你的问题中回答了。

这里有什么问题?

  1. Spring尝试从MyService创建一个bean。因此,它必须调用构造函数MyService(Product1 product1, Product2 product2)

  2. spring需要依赖项Product1并在应用程序上下文中进行搜索。它找到使用Product1注释注释的类@Service,并尝试从中创建一个bean(调用默认构造函数)。然后它尝试注入属性。因此,它需要MyService .. et voila。循环依赖。转到1.并重新开始。

答案 1 :(得分:0)

看起来像您用@Service注释注释似乎是POJO或业务对象时,最肯定不是服务。