Primary注解使用
比如@AutoWired 一个接口A ,但是接口A有多个实现类 这样@Primary 只是让系统知道如果存在多个相同类型的bean时,自动选择哪一个
案例
public interface Animal {
}
@Component
@Primary
public class Dog implements Animal{
}
@Component
public class Cat implements Animal{
}
public class ActionCLass{
@Autowired
Animal animal;// 默认找Dog 类
}
引入方:
@Component
public class IndexService {
@Autowired
Animal animal; // 直接报错
}
控制台报错:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘indexService’: Unsatisfied dependency expressed through field ‘animal’; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.chuliuhuan.domain.Animal’ available: expected single matching bean but found 2: cat,dog
解决办法:给其中一个实现类 添加@Primary 注解
@Primary
@Component
public class Cat implements Animal {
@Override
public void eat() {
System.out.println("the Cat eat");
}
}
问题解决