是否可以使用从相同 class 生成的 bean

Is it possible to use a bean generated from the same class

我正在尝试使用从同一个 class 生成的 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;
  }
}

我必须遵守的两个要求:

这可能吗?如果是,我应该如何在Test class中注入dog Bean?谢谢。

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

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

Spring 将在构造 DogHouse bean 时将 Dog bean 注入到方法中。

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

当@Bean 相互依赖时,为了解决这种依赖关系,一个bean 方法可以调用另一个。在您的情况下,在 dogHouse() 中调用 dog() 完全没问题。