Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧自动接线_Java_Spring_Dependency Injection - Fatal编程技术网

Java 弹簧自动接线

Java 弹簧自动接线,java,spring,dependency-injection,Java,Spring,Dependency Injection,假设我有两个类Circle和Rectangle,它们实现了一个名为Shape的接口。 我有以下课程: public class ObjectFactory { @Autowired @Qualifier("circle") Shape shape; ....... ....... ....... } 我想做的是删除@Qualifier并使自动连接依赖于某个条件(例如,如果条件为true,则注入圆;如果条件为false,则注入矩形),或者使连接依赖于命名约定。 有办法吗

假设我有两个类Circle和Rectangle,它们实现了一个名为Shape的接口。
我有以下课程:

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:我想在一个单独的类中指定它们,这个类将处理所有的自动布线冲突。