JavaSpring:如何以编程方式在BeanDefinition的list属性中填充bean引用列表?
在Spring应用程序上下文的XML配置中,我可以用对适当bean的引用填充bean定义上的列表属性,例如:
<bean id="company" class="SimpleTestProject.beans.jobs.Company">
<property name="workers">
<list>
<ref bean="worker1"/>
<ref bean="worker2"/>
<ref bean="worker3"/>
</list>
</property>
</bean>
现在我想做的是,以编程方式填充这样一个属性。假设我的BeanFactory
由BeanFactoryPostProcessor
处理。在postProcessBeanFactory()
方法中,我找到了我的公司BeanDefinition
,它有一个list属性。然后,我通过调用beanFactory.registerSingleton(...)
来在这个BeanFactory
上注册一个类型为Worker
的单例bean列表。现在,我如何将对这些新的BeanDefinition
的引用填充到company
bean的列表中?我见过,有一种方法像
beanFactory.getBeanDefinition("beanName").getPropertyValues().setPropertyValueAt(...)
这显然设置了一个Bean属性。但是我怎样才能传递一个引用列表呢?有办法做到这一点吗
# 1 楼答案
一旦将单例Bean注册到BeanFactory,就可以将其自动连接到任何Bean,如下所示
Spring容器将自动为您提供与此列表引用匹配类型的bean列表
从reference
如果您试图避免
@Autowired
注释,那么从BeanFactoryPostProcessor
开始也可以。假设您已经将以下字段添加到名为company的bean中在BeanFactory后处理器中