2011-03-24 84 views
2

假设我有两个类Circle和Rectangle来实现一个称为Shape的接口。
和我有下面的类:弹簧自动布线

public class ObjectFactory { 
    @Autowired 
    @Qualifier("circle") 
    Shape shape; 
....... 
....... 
....... 
} 

什么我想要做的是去除@Qualifier,使自动装配依赖于某些条件(例如,如果条件为真,则注入圈,如果条件假,注入矩形)或使布线取决于命名约定。
有没有办法做到这一点?

让我解释一下,如果我删除了@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

您想在哪里指定这些条件? – skaffman 2011-03-24 15:35:48

+0

@skaffman:我希望他们被指定在一个单独的类,将处理所有的自动布线冲突。 – Mehdi 2011-03-24 15:57:16

回答

1

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

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

+0

谢谢你,我会检查这一点,并保持张贴。 – Mehdi 2011-03-24 15:47:38