我正在创建同一类的多个 bean,如下所示:
(CardImpl)ctx.getBean("Card", driver, webElement)
其中 CardImpl
定义如下:
@Component
@Scope(value = ConfigurabelBeanFactory.SCOPE_PROTOTYPE)
public class CardImpl implements Card
因此,我最终得到了多个具有不同属性的实例化 bean(因为我向构造函数提供了变量 webElement
,如上面所示)。
我不会在创建这些 bean 后立即使用它们,而是在流程的后期阶段需要它们。所以这是我的问题:
问:如果将其属性作为搜索参数,如何使用一个已创建的 bean(位于 Spring 容器中的某个位置)查找或/并引用该 bean?
P.S.如果这种方法不被认为是一个好的做法,请随时指出任何替代方案。
最佳答案
首先不要使用ctx.getBean
。仅将此作为最后结果。您不应该依赖上下文来检索 bean,而是在 Spring 中使用依赖注入(inject)。
一般来说,我认为应用程序的重置不应该知道或关心它们正在交互的 bean 的范围。无论是session、singleton还是prototype,这都不会影响他们的界面。
有很多方法可以完成您正在做的事情,但这几乎与静态 Map<String, CardImpl>
相同。并从中提取实例。这破坏了 Spring 依赖注入(inject)的全部目的。您可以将这张 map 放在一个单例 bean 中,我想这将是最不可怕的。
关于java - 定位实例化的原型(prototype) bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40395435/