如何在春季注册FactoryBeans集合

来源:爱站网时间:2021-11-18编辑:网友分享
如何在春季注册FactoryBeans集合?这个问题貌似有很多人来问,爱站技术小编今天就整理出来给大家参考一下,我觉得这篇文章干货还是很多的,可以做做笔记。

问题描述


我有一个org.springframework.beans.factory.FactoryBean spring接口的自定义实现。如果我创建了它的实例并将其注册为bean,那么它将在spring之前注册,并且可以按预期使用它产生的值:

@Bean
public FactoryBean create() {
     return new CustomFactoryBean();
}

但是,我有一个属性,它是一个字符串列表,我想为每个字符串创建一个单独的FactoryBean实例,然后我想自动装配一组值,其中每个值都是由单独的FactoryBean生成的。有办法吗?

理想情况下,我想做这样的事情:

@Bean
public Collection> createMultiple(@Value("${someproperty}") Set values) {
     return values.stream().map(s -> new CustomFactoryBean(s)).collect(toList());
}

@Bean
public SomeService createService(Collection createdValues) { //every value is produced by a separate factory
     return new SomeService(createdValues);
}

不幸的是,上面的代码无法正常工作,它只注册了一个FactoryBean实例的集合的bean,但没有注册工厂...

思路:


您需要创建一个BeanDefinitionBuilder并以编程方式将所有工厂bean注册到createMultiple方法内的应用程序上下文中。

BeanDefinitionRegistry registry passed as parameterand use
registry.registerBeanDefinition(beanName, builder.getBeanDefinition());

以上内容就是爱站技术频道小编为大家分享的关于如何在春季注册FactoryBeans集合,看完以上分享之后,大家应该都知道怎么去操作了吧。

上一篇:怎么使用点查找线

下一篇:如何使用jgrapht库标记或着色顶点?

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载