Spring 注解 @Qualifier

项目中通常定义接口与实现类,Service 与 ServiceImpl ,使用实现类使用 @Autowire 或者 @Resource 

@Autowire 

根据类型注入

@Resource

根据名称注入,其次按照类型注入

@Qualifier("service")

其指定具体的实现类,与@Autowire 一起使用,可以指定类型与名称

使用@Autowire 注入的时候,注入接口类 UserService,实现类标记@Service 实现UserService ,这样就会自动找到UserService 类以及他的子类。但是当UserService 有多个字类实现类的时候,注入的是哪个呢?会造成冲突,

所哟@Autowire 注入的时候需要保证实现类只有一个。

@Resource 使用名称进行匹配,如果没有找到相同名称的Bean ,则会按照类型匹配。而实现类一般直接写@Service ,而实现类的Bean 名称实际上是 userServiceImpl , 则无法匹配到 @Resource 的name ,即会进行类型匹配。

如果需要一次匹配,需要在实现类上标注名字@Service("userService") ,这样在 @Resource 注入的时候一次匹配就可以

参考:https://blog.csdn.net/revent/article/details/49203619

原文地址:https://www.cnblogs.com/bytecodebuffer/p/13772678.html