假设我有两个类Circle和Rectangle,它们实现了一个名为Shape的接口 我有以下课程:
public class ObjectFactory {
@Autowired
@Qualifier("circle")
Shape shape;
.......
.......
.......
}
我想要做的是删除@Qualifier并使自动装配取决于某些条件(例如,如果条件为真,则注入Circle,如果条件为假,则注入矩形)或使布线依赖于命名惯例。
有没有办法做到这一点 ?
让我解释一下,如果我删除@Qualifier注释,我将最终得到以下异常
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [com.app.objects.Shape] is defined:
expected single matching bean but found 2: [circle, rectangle]
有没有办法以编程方式处理该异常,以便依赖条件自动连接?
答案 0 :(得分:1)
您可以在@Resource
中使用SpEL,也许您也可以在@Qualifier
中使用它。
但通常这样的逻辑可以放在FactoryBean
中,您可以在其中决定返回哪个实例。