Java 带参数的Spring原型bean?

Java 带参数的Spring原型bean?,java,spring,spring-bean,prototype-scope,Java,Spring,Spring Bean,Prototype Scope,是否可以使用XML配置或基于注释的配置定义原型bean,这样我就可以获得具有自定义参数值的bean实例?我的用例是一个消息队列处理程序,它使用入站消息中提供的不同参数值进行API调用 在这种情况下,我似乎可以做两件事中的一件: 获取原型范围bean的实例,然后调用setter将其定制为特定于入站消息 使用普通的newmyprototypebean()构造bean类的新实例,然后调用setter来定制实例 也许我的问题的另一种表述方式是:使用原型作用域bean与使用简单Java构造函数相比有什

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

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

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

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

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

如果您想从“非托管”代码(而不是从bean)获取原型实例,或者不想使用查找方法,可以使用
org.springframework.beans.factory.BeanFactory.getBean(String beanName,Object…
实现同样的目标


回答第二个问题,prototype scope bean和使用简单Java构造函数的区别在于prototype scope bean仍然可以访问Spring容器的特性。这包括但不限于以下内容:它可以在XML配置(
)或注释(
@Resource
@Autowired
,…)中提供协作器,它可以实现Spring感知接口(如
ApplicationContextAware
,以便原型bean本身可以访问容器).

谢谢,您能否编辑您的答案,将
@Lookup
方法段落放在第一位?Pivotal Support确认了您的答案,并表示
@Lookup
是更好的方法,可能与您上面提到的原因相同。谢谢,我已相应地重新安排了答案。@PiotrFindeisen我必须实现类似的功能。如何在运行时将项目传递给从SpringServiceLocator获得的原型bean。服务定位器方法只接受一个字符串参数,该参数基本上是到SpringBean id/name的映射。@BlueLower抱歉,但我不知道什么是spring服务定位器。@PiotrFindeisen此: