找到实例化的原型bean

时间:2016-11-03 06:51:50

标签: java spring dependency-injection

我正在创建同一个类的多个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。如果这种做法不被认为是一种好的做法,请随意指出任何替代方案。

1 个答案:

答案 0 :(得分:1)

首先不要使用ctx.getBean。仅将此作为最后结果使用。你不应该依赖于上下文来检索bean,而是在Spring中使用依赖注入。

通常我不认为应用程序的重置应该知道或关心它们与之交互的bean的范围。无论是会话,单身还是原型,这都不会影响他们的界面。

有很多方法可以做你正在做的事情,但它几乎与拥有静态Map<String, CardImpl>和拉出实例相同。这打破了Spring依赖注入的全部目的。你可以将这个地图放在一个单独的bean中,这是我猜的最不可怕的。