是否可以使用从同一类生成的bean

时间:2019-05-27 06:13:22

标签: java spring dependency-injection javabeans

我正在尝试使用从同一类生成的bean。例如:

public class Test {
  ...


  @Bean
  public Dog dog() {
    ...
    return dog;
  }

  @Bean
  public DogHouse dogHouse() {
    Dog d = dog(); // Is this right? Can I inject dog bean here?
    ...
    return dogHouse;
  }
}

我必须遵守的两个要求:

  • 使用dog()dogHouse()的结果
  • dog()dogHouse()保留在相同的Java类中

这可能吗?如果是的话,我应该如何在Test类中注入狗Bean?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用参数注入使spring知道DogHouse bean需要Dog bean。

@Bean
public DogHouse dogHouse(Dog d) {
  ...
  return dogHouse;
}

Spring将在构造Dog bean的同时将DogHouse bean注入该方法。

答案 1 :(得分:0)

@Bean
  public DogHouse dogHouse() {
    Dog d = dog();
    ...
    return dogHouse;
  }

当@Bean相互依赖时,为了解决此依赖关系,一个bean方法可以调用另一个。就您而言,在 dogHouse()内部调用 dog()完全可以。