【问题标题】:Is it possible to use a bean generated from the same class是否可以使用从同一类生成的 bean
【发布时间】:2019-05-27 06:13:21
【问题描述】:

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

我必须遵守的两个要求:

  • dogHouse() 中使用dog() 的结果
  • dog()dogHouse() 保持在同一个java 类中

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

【问题讨论】:

    标签: java spring dependency-injection javabeans


    【解决方案1】:
    @Bean
      public DogHouse dogHouse() {
        Dog d = dog();
        ...
        return dogHouse;
      }
    

    当@Bean 相互依赖时,为了解决这种依赖关系,一个 bean 方法可以调用另一个。在您的情况下,在 dogHouse() 内调用 dog() 非常好。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-30
        • 2017-04-23
        • 2012-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多