У меня есть пользовательская реализация org.springframework.beans.factory.FactoryBean
пружинного интерфейса. Если я создаю его экземпляр и регистрирую его как bean-компонент, он регистрируется весной, и я могу использовать полученные им значения, как и ожидалось:
@Bean
public FactoryBean<T> create() {
return new CustomFactoryBean();
}
Однако у меня есть свойство, которое представляет собой список строк и для каждой строки я хочу создать отдельный экземпляр FactoryBean, затем я хочу автоматически связать коллекцию значений, где каждое значение генерируется отдельным FactoryBean
. Есть ли способ сделать это?
В идеале я хочу сделать что-то подобное:
@Bean
public Collection<FactoryBean<T>> createMultiple(@Value("${someproperty}") Set<String> values) {
return values.stream().map(s -> new CustomFactoryBean(s)).collect(toList());
}
@Bean
public SomeService createService(Collection<T> createdValues) { //every value is produced by a separate factory
return new SomeService(createdValues);
}
Приведенный выше код, к сожалению, не работает, он просто регистрирует компонент, являющийся коллекцией экземпляров FactoryBean
, но фабрики не регистрируются ...