弹簧自动接线

时间:2011-03-24 15:31:37

标签: java spring dependency-injection

假设我有两个类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]

有没有办法以编程方式处理该异常,以便依赖条件自动连接?

1 个答案:

答案 0 :(得分:1)

您可以在@Resource中使用SpEL,也许您也可以在@Qualifier中使用它。

但通常这样的逻辑可以放在FactoryBean中,您可以在其中决定返回哪个实例。