在spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类。
@Primary和@Qualifer 注解的区别在于:
用@Primary 告诉spring 在犹豫的时候优先选择哪一个具体的实现。
用@Qualifer告诉spring真正使用哪一个具体的实现。
下面是个简单的使用例子。
有如下一个接口
public interface Singer { String sing(String lyrics); }
有下面的两个实现类:
@Component // 加注解,让spring识别
public class MetalSinger implements Singer{
@Override
public String sing(String lyrics) {
return "I am singing with DIO voice: "+lyrics;
}
}
//注意,这里没有注解
public class OperaSinger implements Singer {
@Override
public String sing(String lyrics) {
return "I am singing in Bocelli voice: "+lyrics;
}
}