Java Spring选择所需的bean实现

Java Spring选择所需的bean实现,java,spring,Java,Spring,我在SpringWeb应用程序中有一个原型范围的bean(我正在使用Spring注释),我们称之为MainBean,它通过依赖注入使用IOtherBean的一个实现 我遇到的问题是,在运行时之前,我们不知道需要使用哪个实现。当我们调用MainBean的一个方法(比如doStuff(stringparam))时,它应该根据param值来确定选择哪个实现 目前,我只是通过将ApplicationContext自动连接到MainBean并基于param值调用appContext.getBean()来实

我在SpringWeb应用程序中有一个原型范围的bean(我正在使用Spring注释),我们称之为MainBean,它通过依赖注入使用IOtherBean的一个实现

我遇到的问题是,在运行时之前,我们不知道需要使用哪个实现。当我们调用MainBean的一个方法(比如doStuff(stringparam))时,它应该根据param值来确定选择哪个实现

目前,我只是通过将ApplicationContext自动连接到MainBean并基于param值调用appContext.getBean()来实现这一点,而且效果很好

我想知道有没有更干净的方法?如果这些不是Spring管理的bean,我会使用工厂模式来实例化正确的bean。春天也有类似的情况吗?从我所读到的内容来看,我看不到如何在运行时使用SpringFactoryBean来做我想做的事情


非常感谢您的建议。

实际上,通过使用
ApplicationContext.getBean()
您已经使用了工厂模式,只有Spring的模式。
getBean()
方法在
BeanFactory
接口中声明,该接口由
ApplicationContext
扩展。所以你现在所做的对我来说没问题。

你能发布一些代码示例吗?你说的没有多大意义。如果您有来自一个接口(IOtherBean)的多个bean,那么所有bean都将具有相同参数值的相同方法。当您使用接口类型进行注入时,我真的看不到选择,除非您在那里使用一些工厂模式和静态工厂方法。您是否尝试在注入时使用@Qualifier注释和限定符名称?