Spring 带参数的原型 bean?

Spring prototype beans with parameters?

是否可以使用 XML 配置或基于注解的配置来定义 原型 bean,这样我就可以使用自定义参数获取 bean 实例价值?我的用例是一个消息队列处理程序,它使用入站消息中提供的不同参数值进行 API 调用。

在这种情况下,我似乎可以做以下两件事之一:

也许我的问题的另一种表述方式是:使用原型作用域 bean 与使用简单的 Java 构造函数相比有什么好处?

要在将参数传递给构造函数时从另一个 bean 获取原型 bean,您可以使用 <lookup-method>(XML 配置)或 @Lookup(基于注释的配置)。

如果你想从 "unmanaged" 代码(而不是从 bean)中获取原型实例 或者 你不想使用查找方法,你可以使用 org.springframework.beans.factory.BeanFactory.getBean(String beanName, Object...).

实现相同的效果

回答你的第二个问题,原型作用域 bean 和使用简单 Java 构造函数的区别在于原型作用域 bean 仍然可以访问 Spring 容器的功能。这包括但不限于以下内容:它可以在 XML 配置中提供协作者 (<property name="someCollaborator" ref="..."/>) 或带有注释 (@Resource@Autowired、...) , t 可以实现 Spring 感知接口(如 ApplicationContextAware 以便原型 bean 本身可以访问容器)。