Может ли весна заполнить список определенного типа автоматически? - PullRequest
0 голосов
/ 05 июля 2018

Я бы хотел, чтобы список, заполненный элементами определенного типа, автоматически добавлялся Spring.

@Component
class Scratch {
 @Autowired
 List<Person> person;
}

Даны следующие бобы:

@Configuration
class App {

  @Bean
  public Person coolPerson() {
   return new CoolPerson();
  }

  @Bean
  public Person stupidPerson() {
    return new stupidPerson();
  }

  @Bean
  public Person funnyPerson() {
    return new FunnyPerson();
  }

}

Результат, который мне нравится получать, состоит в том, что List<Person> заполнен тремя элементами. Один из объявленных Bean из Configuration выше.

Если это невозможно из-за DI Спринга, есть ли у меня хакерский способ?

Я думаю, что весна как бы собирает все Bean в своем контексте. Так что насчет доступа к этому контексту и заполнения списка вручную, например:

Псевдо

    @Component
    class Scratch {
      List<Person> person = SpringContext.getBeans(Person.class);
    }

1 Ответ

0 голосов
/ 05 июля 2018

Да, это работает:

@Component
public class Scratch {
    @Autowired
    List<Person> person;
}

Это будет внедрять каждый экземпляр Person.

Вы можете даже автоматически подключить List<MyInterface>, и он вставит все экземпляры этого интерфейса, которые сможет найти.

...