我在Spring Web应用程序中有一个原型范围的bean(我正在使用Spring注释),我们称之为MainBean,它通过依赖注入使用IOtherBean的一个实现。
我遇到的问题是,我们不知道在运行时我们需要使用哪种实现。当我们调用MainBean的一个方法(比如doStuff(String param))时,它应该根据param值确定要选择的实现。
目前我只是通过将ApplicationContext自动装配到MainBean并根据param值调用appContext.getBean()来实现它,并且工作正常。
我想知道有更干净的方法吗?如果那些不是Spring托管bean,我会使用Factory模式来实例化正确的bean。春天有类似的东西吗?根据我的阅读,我无法看到如何在运行时使用Spring工厂bean来做我想做的事。
任何建议表示赞赏。
答案 0 :(得分:2)
实际上,使用ApplicationContext.getBean()
你已经使用工厂模式,只有Spring的工具模式。 getBean()
方法在BeanFactory
接口中声明ApplicationContext
扩展。所以你现在正在做的事情对我来说没问题。