带参数的Spring原型bean?

时间:2016-04-18 09:31:20

标签: java spring spring-bean prototype-scope

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

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

  • 获取我的原型范围bean的实例,然后调用setter将其自定义为特定于入站消息。
  • 使用普通new MyPrototypeBean()构造bean类的新实例,然后调用setter来自定义实例。

或许用另一种方式来表达我的问题:使用原型范围bean与使用简单的Java构造函数有什么好处?

1 个答案:

答案 0 :(得分:1)

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

如果你想从&#34; unmanaged&#34;获得原型实例。代码(不是来自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本身可以访问容器)。