我正在创建同一个类的多个bean:
(CardImpl)ctx.getBean("Card", driver, webElement)
其中CardImpl
的定义如下:
@Component
@Scope(value = ConfigurabelBeanFactory.SCOPE_PROTOTYPE)
public class CardImpl implements Card
所以在这里我最终得到了具有不同属性的多个实例化bean(因为我向构造函数提供变量webElement
,如上所示)。
我不会在创建后立即使用这些bean,但在我的流程的后期需要它们。所以这是我的问题:
问:如果其属性作为搜索参数,如何找到或/并引用已创建的bean(位于Spring容器中的某个位置)?
P.S。如果这种做法不被认为是一种好的做法,请随意指出任何替代方案。
答案 0 :(得分:1)
首先不要使用ctx.getBean
。仅将此作为最后结果使用。你不应该依赖于上下文来检索bean,而是在Spring中使用依赖注入。
通常我不认为应用程序的重置应该知道或关心它们与之交互的bean的范围。无论是会话,单身还是原型,这都不会影响他们的界面。
有很多方法可以做你正在做的事情,但它几乎与拥有静态Map<String, CardImpl>
和拉出实例相同。这打破了Spring依赖注入的全部目的。你可以将这个地图放在一个单独的bean中,这是我猜的最不可怕的。