假设我有两个类 Circle 和 Rectangle,它们实现了一个名为 Shape 的接口(interface)。
我有以下类(class):
public class ObjectFactory {
@Autowired
@Qualifier("circle")
Shape shape;
.......
.......
.......
}
我想做的是删除@Qualifier 并使 Autowiring 取决于某些条件(例如,如果条件为真,则注入(inject)圆,如果条件为假,则注入(inject)矩形)或使布线取决于命名约定。
有没有办法做到这一点 ?
让我解释一下,如果我删除@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]
有没有办法以编程方式处理该异常,以便具有条件相关的 Autowiring ?
最佳答案
您可以使用 SpEL在 @Resource
中,也许您也可以在 @Qualifier
中使用它。
但通常这样的逻辑可以放在 FactoryBean
中,您可以在其中决定返回哪个实例。
关于java - Spring 自动接线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421607/