java - 定位实例化的原型(prototype) bean

标签 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 容器中的某个位置)查找或/并引用该 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/

相关文章:

java - 在分布式环境中使用JPA而不使用EJB

c# - 参数名称 : root cannot be Null exception Ninject

java - 显示错误消息的代码 :- error: incompatible types: Schedule_fragment cannot be converted to Fragment

java错误处理: how to check for numberformatexceptions

java - 是否可以将 validBy 属性作为参数传递给注释?

java - 为什么 Spring @Configuration 类继承没有按预期工作?

java - Spring/JAVA连续进程同步

c# - 如何将依赖项注入(inject) .Net Core 项目中的自定义 WebHostService?

angular - 如何将窗口注入(inject)服务?

java - 如何使用 Storyyeller/Krakatau 反编译 .class 和 jar 文件