[英]org.springframework.beans.factory.BeanCreationException: Error creating bean in Spring
[英]Spring: Creating an arbitrary number of beans using a factory bean
我有一个factory-ish bean,它在启动时创建了许多对象,我希望这些对象本身就是Spring bean。
如果我正在创建单个对象,我可以使用工厂方法进行实例化,例如。 (摘自Spring docs 4.3.2.3节):
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="serviceLocator" class="examples.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="clientService"
factory-bean="serviceLocator"
factory-method="createClientServiceInstance"/>
如果我提前知道我有n个对象,我可以调用n种不同的方法,但我不这样做 - 我的工厂创建了一个未知的任意数量的对象。
有谁知道如何做到这一点?
他们的目标是让他们像上面那样“适当”的春豆会产生; 具体而言,他们应该有资格作为来源和目标进行自动装配。 注意这意味着我不仅仅想要返回一个Collection并将其作为bean。
我正在使用XML配置的Spring 3.1。
好像你需要动态bean创建......
从来没有尝试过,但正如本问题所述 ,您可以尝试使用BeanDefinitionBuilder 。 似乎它拥有你所需要的一切。 从工厂bean中使用它(现在不需要将其定义为工厂bean)。
编辑:我在这里找到了一个很好的用法示例。
就像是:
String className = ... // get class name from wherever you get it
// Build your dynamic bean:
BeanDefinitionBuilder bdb = BeanDefinitionBuilder.genericBeanDefinition(className);
bdb.setSingleton(true);
// add dependencies:
bdb.addDependsOn(dependeeBeanName);
// Eventually - validate it and get it:
AbstractBeanDefinitionb bean = db.getBeanDefinition();
// I guess only now you get other already existing beans
// and make them depend on the one you created in the same way
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.