java – Spring:使用工厂bean创建任意数量的bean
发布时间:2020-12-15 02:33:44 所属栏目:Java 来源:网络整理
导读:我有一个factory-ish bean,它在启动时创建了许多对象,我希望这些对象本身就是 Spring bean. 如果我正在创建单个对象,我可以使用工厂方法进行实例化,例如. (摘自Spring docs 4.3.2.3节): !-- the factory bean,which contains a method called createInstanc
我有一个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创建……
从未尝试过,但如this question所述,您可以尝试使用BeanDefinitionBuilder.似乎它拥有您所需要的一切.从工厂bean中使用它(现在不需要将其定义为工厂bean). 编辑:我找到了一个很好的用法示例here. 就像是: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |