Можно ли использовать бин, сгенерированный из того же класса? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь использовать бин, сгенерированный из того же класса.Например:

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()
  • Keep dog() и dogHouse() в том же классе Java

Возможно ли это?Если это так, как я должен вводить боб собаки в тестовом классе?Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Вы можете использовать инъекцию аргумента, чтобы сообщить Spring, что для компонента DogHouse требуется компонент Dog.

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

Spring будет вводить компонент Dog в метод при создании компонента DogHouse.

0 голосов
/ 27 мая 2019
@Bean
  public DogHouse dogHouse() {
    Dog d = dog();
    ...
    return dogHouse;
  }

Если у @Bean есть зависимости друг от друга, то для разрешения этой зависимости один метод бина может вызывать другой. В вашем случае вызов dog () изнутри dogHouse () вполне подойдет.

...