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注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot处理请求参数中包含特殊符号

    SpringBoot处理请求参数中包含特殊符号

    今天写代码遇到了一个问题,请求参数是个路径“D:/ExcelFile”,本文就详细的介绍一下该错误的解决方法,感兴趣的可以了解一下
    2021-06-06
  • struts升级到2.5.2遇到的问题及解决方案(推荐)

    struts升级到2.5.2遇到的问题及解决方案(推荐)

    原来的版本是2.3.x,由于安全原因需要升级到2.5.2。但是在升级过程中遇到各种各样的问题,下面小编给大家带来了struts升级到2.5.2遇到的问题及解决方案,需要的朋友参考下吧
    2016-11-11
  • 内存屏障由来及实现思路

    内存屏障由来及实现思路

    这篇文章主要为大家详细介绍了内存屏障由来及实现思路的详细讲解,让大家彻底的理解内存屏障,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-01-01
  • JAVA设计模式之组合模式原理与用法详解

    JAVA设计模式之组合模式原理与用法详解

    这篇文章主要介绍了JAVA设计模式之组合模式,简单说明了组合模式的原理,并结合实例分析了java组合模式的具体用法,需要的朋友可以参考下
    2017-08-08
  • springboot实现全局异常处理的方法(住家饭系统)

    springboot实现全局异常处理的方法(住家饭系统)

    住家饭系统将异常类型分为客户端异常(ClientException),系统异常(ServiceException),远程调用异常(RemoteException),本文给大家介绍springboot实现全局异常处理的方法,感兴趣的朋友一起看看吧
    2025-05-05
  • java 中迭代器的使用方法详解

    java 中迭代器的使用方法详解

    这篇文章主要介绍了java 中迭代器的使用方法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • SpringBoot整合MinIO实现文件上传的方法详解

    SpringBoot整合MinIO实现文件上传的方法详解

    一般涉及到文件上传,基本上都是保存在项目本地,这种方式比较省事,但是安全性不高。所以今天给大伙详细介绍一些如何利用MinIO实现文件上传,感兴趣的可以了解一下
    2022-05-05
  • SpringBoot文件分片上传的示例代码

    SpringBoot文件分片上传的示例代码

    分片上传在很多地方都可以使用的到,本文主要介绍了SpringBoot文件分片上传的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Spring学习笔记3之消息队列(rabbitmq)发送邮件功能

    Spring学习笔记3之消息队列(rabbitmq)发送邮件功能

    这篇文章主要介绍了Spring学习笔记3之消息队列(rabbitmq)发送邮件功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • java设置session过期时间的实现方法

    java设置session过期时间的实现方法

    这篇文章主要介绍了java设置session过期时间的实现方法,以实例形式详细讲述了具体实现过程,非常具有参考借鉴价值,需要的朋友可以参考下
    2014-10-10

最新评论