Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:使用工厂bean创建任意数量的bean_Java_Spring - Fatal编程技术网

Java Spring:使用工厂bean创建任意数量的bean

Java Spring:使用工厂bean创建任意数量的bean,java,spring,Java,Spring,我有一个factory-ishbean,它在启动时创建许多对象,我希望这些对象本身就是springbean 如果我创建单个对象,我可以使用工厂方法进行实例化,例如(来自Spring文档第4.3.2.3节): 如果我提前知道我会有n个对象,我可以调用n个不同的方法,但我没有——我的工厂会创建任意数量的对象,而这些对象在时间之前是未知的 有人知道怎么做吗 目标是让它们成为“合适的”春豆,就像上面所说的那样;具体来说,它们应该可以作为源和目标进行自动布线。请注意,这意味着我不想只返回一个集合并将其

我有一个factory-ishbean,它在启动时创建许多对象,我希望这些对象本身就是springbean

如果我创建单个对象,我可以使用工厂方法进行实例化,例如(来自Spring文档第4.3.2.3节):


如果我提前知道我会有n个对象,我可以调用n个不同的方法,但我没有——我的工厂会创建任意数量的对象,而这些对象在时间之前是未知的

有人知道怎么做吗

目标是让它们成为“合适的”春豆,就像上面所说的那样;具体来说,它们应该可以作为源和目标进行自动布线。请注意,这意味着我不想只返回一个集合并将其作为bean


我使用的是XML配置的Spring3.1。

似乎需要动态bean创建

以前从未尝试过,但如中所述,您可以尝试使用。看起来它已经满足了你的所有需要。从工厂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
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