是否可以使用XML配置或基于注释的配置定义原型bean ,以便我可以使用自定义参数值获取bean的实例?我的用例是一个消息队列处理程序,它使用入站消息中提供的不同参数值进行API调用。
在这种情况下,似乎我可以做两件事之一:
new MyPrototypeBean()
构造bean类的新实例,然后调用setter来自定义实例。或许用另一种方式来表达我的问题:使用原型范围bean与使用简单的Java构造函数有什么好处?
答案 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本身可以访问容器)。