【发布时间】:2016-03-11 00:12:00
【问题描述】:
这是我想要实现的简化版本。 我有同一个接口的多个实现。根据运行时的用户输入,我想选择正确的实现。
例如,假设我有一个名为 Color 的接口。实现这个接口的类有很多,Red 类、Blue 类、Green 类等等。
在运行时,我需要根据用户输入选择实现。实现这一目标的一种方法是这样的
@Autowired
@Qualifier("Red")
private Color redColor;
@Autowired
@Qualifier("Green")
private Color greenColor;
private Color getColorImplementation()
{
if(userInput=="red")
{
return redColor;
}
else if(userInput=="green")
{
return greenColor;
}
else
{
return null;
}
}
但问题在于,每次添加新实现时,我都必须更新选择实现的代码,这超出了 spring 控制部分反转的整个目的。使用弹簧执行此操作的正确方法是什么?
【问题讨论】: