Spring中的@Qualifier注解和@Resource注解区别解析

 更新时间:2023年11月10日 09:23:27   作者:着力  
这篇文章主要介绍了Spring中的@Qualifier注解和@Resource注解区别解析,@Qualifier注解的用处是当一个接口有多个实现的时候,为了指名具体调用哪个类的实现,@Resource注解可以通过 byName命名和byType类型的方式注入,需要的朋友可以参考下

@Qualifier和@Resource注解

在传统的MVC实现里面Spring boot 的controller-service-Impl-Dao-db controller层调用service接口层里面的方法大多使用@Autowired自动注入注解

实际上调用Impl的具体实现,但是当一个接口的方法,对应多个实现的时候,怎么区分到底注入哪一个呢

答案是@Qualifier注解和@Resource注解

  • @Qualifier注解的用处:当一个接口有多个实现的时候,为了指名具体调用哪个类的实现
  • @Resource注解:可以通过 byName命名 和 byType类型的方式注入, 默认先按 byName的方式进行匹配,如果匹配不到,再按 byType的方式进行匹配。 可以为 @Service和@Resource 添加 name 这个属性来区分不同的实现

例如:

@Service
public interface myService{
	public int findSomeone();
}

//第一种实现
@Service("myServiceImpl1")
public class myServiceImpl1 implements myService{
	@Overide
	public int findSomeone() {
		//根据身份找
	}
}

//第二种实现
@Service("myServiceImpl2")
public class myServiceImpl2 implements myService{
	@Override
	public int findSomeone() {
		//根据名字找
	}
}

在controller层,

采用

1、@Autowired和@Qualifier(“myServiceImpl1”)结合;

或者

2、@Resource(name = “myServiceImpl2”); 两种方式指定要注入的是接口的具体是哪个实现类

@Controller
public class UserController{
	@Autowired
	@Qualifier("myServiceImpl1")
	public myService myservice;

	@Resource(name = "myServiceImpl2")
	public myService myservice2;
	
	@RequestMapping("/findSomeone")
	public User findSomeone(@RequestParam("xx") int xx) {
		User user = myservice.findSomeone(xx);
		return user;
	}
}

到此这篇关于Spring中的@Qualifier注解和@Resource注解区别解析的文章就介绍到这了,更多相关@Qualifier和@Resource注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈Java生成唯一标识码的三种方式

    浅谈Java生成唯一标识码的三种方式

    我们经常会遇到这样的场景,需要生成一个唯一的序列号来表明某一个数据的唯一性,本文主要介绍了浅谈Java生成唯一标识码的三种方式,感兴趣的可以来了解一下
    2022-01-01
  • 快速掌握Java中注解与反射

    快速掌握Java中注解与反射

    本文详细介绍了Java中注解和反射的概念及应用,注解是用于给代码添加元数据的标记,如@Override、@Deprecated等,反射机制则是在运行时获取和操作类的内部信息,提高了代码的灵活度,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • Springboot结合JDBC实现双数据源实例

    Springboot结合JDBC实现双数据源实例

    这篇文章主要为大家介绍了Springboot结合JDBC实现双数据源实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 彻底搞懂Java多线程(一)

    彻底搞懂Java多线程(一)

    这篇文章主要给大家介绍了关于Java面试题之多线程和高并发的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-07-07
  • java api返回值的标准化详解

    java api返回值的标准化详解

    这篇文章主要介绍了java api返回值的标准化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Spring AOP的概念与实现过程详解

    Spring AOP的概念与实现过程详解

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,可通过运行期动态代理实现程序功能的统一维护的一种技术。AOP是 Spring框架中的一个重要内容
    2023-02-02
  • Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化

    Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化

    Dwr对我来说最重要的功能点就是反向Ajax调用,通俗来将就是后端可以直接调用前端的JS方法(只要在所能访问的范围内),这也就是Dwr的真正来由,当然它也有最基本的前端直接调用后端的特性,省去了我们经常的一般Ajax调用
    2016-04-04
  • mybatis-plus如何使用mapper的xml

    mybatis-plus如何使用mapper的xml

    这篇文章主要介绍了mybatis-plus如何使用mapper的xml问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Java this super代码实例及使用方法总结

    Java this super代码实例及使用方法总结

    这篇文章主要介绍了Java this super代码实例及使用方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 使用自定义Json注解实现输出日志字段脱敏

    使用自定义Json注解实现输出日志字段脱敏

    这篇文章主要介绍了使用自定义Json注解实现输出日志字段脱敏,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论