Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.DBConnector' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
Field connector in com.example.TaskController required a single bean, but 2 were found:
- devDBConnector: defined in file [C:\Users\Administrator\Downloads\springboot\target\classes\com\example\DevDBConnector.class]
- testDBConnector: defined in file [C:\Users\Administrator\Downloads\springboot\target\classes\com\example\TestDBConnector.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
[WARNING]
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:527)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskController': Unsatisfied dependency expressed through field 'connector'; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.example.DBConnector' available: expected single matching bean
but found 2: devDBConnector,testDBConnector
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
对两个类指定id,然后再用qualifier注解
autowired默认是根据类型去匹配。 你改成byname。
根据名称去匹配。
如果你是通过autowired做匹配的话, 加一个qualifier(value="") 指定的名称
做自动注入的时候发现有两个实现类,spring不知道注入哪一个。