Java 弹簧自动接线
假设我有两个类Circle和Rectangle,它们实现了一个名为Shape的接口。Java 弹簧自动接线,java,spring,dependency-injection,Java,Spring,Dependency Injection,假设我有两个类Circle和Rectangle,它们实现了一个名为Shape的接口。 我有以下课程: public class ObjectFactory { @Autowired @Qualifier("circle") Shape shape; ....... ....... ....... } 我想做的是删除@Qualifier并使自动连接依赖于某个条件(例如,如果条件为true,则注入圆;如果条件为false,则注入矩形),或者使连接依赖于命名约定。 有办法吗
我有以下课程:
public class ObjectFactory {
@Autowired
@Qualifier("circle")
Shape shape;
.......
.......
.......
}
我想做的是删除@Qualifier并使自动连接依赖于某个条件(例如,如果条件为true,则注入圆;如果条件为false,则注入矩形),或者使连接依赖于命名约定。有办法吗 让我解释一下,如果我删除@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]
有没有一种方法可以通过编程方式处理该异常,从而实现与条件相关的自动布线?您可以在@Resource
中使用,或者您也可以在@Qualifier
中使用它
但是通常这种逻辑可以放在一个
FactoryBean
中,在那里你可以决定返回哪个实例。你想在哪里指定这些条件?@skaffman:我想在一个单独的类中指定它们,这个类将处理所有的自动布线冲突。