Ich habe Bohnen instanziiert wie unten in einem @Configurationautowiring Bohnen instanziiert sowohl einzeln als auch als Liste
@Bean
public Queue queue1() {
return new Queue("queue1");
}
@Bean
public Queue queue2() {
return new Queue("queue2");
}
@Bean
public List<Queue> queues(List<String> names) {
List<Queue> ret = new LinkedList<>();
for (String name : names) {
ret.add(new Queue(name));
}
return ret;
}
Als ich sie @Autowire wie unten
@Autowired
private Collection<Queue> queues;
oder
@Autowired
private List<Queue> queues;
Ich würde erwarten, alle zu bekommen (sowohl die einzeln instanziiert als auch als eine Liste) von ihnen, aber ich bekomme nur die einzeln instanziiert.
Können Sie bitte beraten?
Hinweis:
Wenn ich @Qualifier verwende ich kann die Liste diejenigen bekommen autowire sondern nur diejenigen. Ich suche nach einer Möglichkeit, sie alle zu autowire.
Was wollen Sie erreichen? Dies scheint eine schlechte Idee für mich zu sein. – galovics
@galovics Ich kenne den Namen von einigen der Warteschlangen apriori, aber den Rest der Namen bekomme ich als Liste. Dann möchte ich alle durchlaufen. –
Sie sollten sie einzeln als Bohnen hinzufügen. Sie sollten dazu einen 'BeanRegistryPostProcessor' oder' BeanFactoryPostProcessor' verwenden. Wenn man sie als Liste ausstellt, werden keine Spring-Beans (die einzelnen 'Queue's drin) gemacht. –