Spring中@Primary注解使用。
假定,有如下两个类,OperaSinger and MetalSinger。
OperaSinger类
Singer接口
现在定义SingerService并且注入Singer
SingerService类
你觉得哪个Singer实现类会被注入?结果如下:
这是因为OperaSinger类未定义@Component或者@Service注解,所以Spring对于OperaSinger类完全没想法,现在加上@Component注解:
然后,会得到异常信息:
原因显而易见,如果有不止一个bean的相同类型,并且使用了@Autowired注解根据类型绑定bean,就会得到这个异常信息,Spring不知道如何去选择。
现在给OperaSinger类加上@Primary注解。
结果如下:
这是因为OperaSinger类加上了@Primary注解,Primary主要的,从单词意思就可以理解。
另外解决方法是,使用@Qualifier注解使用value属性指定bean的名称。
英文原文链接
原创文章转载请注明出处: Spring注解@Primary