gpt4 book ai didi

java - 带参数的 Spring 原型(prototype) bean?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:08 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

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

关于java - 带参数的 Spring 原型(prototype) bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com