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+SSM+jsp+mysql+maven实现一个仿天猫服装商城系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • 详解Java的MyBatis框架中的缓存与缓存的使用改进

    详解Java的MyBatis框架中的缓存与缓存的使用改进

    很多人在使用MyBatis的缓存后经常会遇到MySQL分页查询的显示问题,针对于此,这里我们就来详解Java的MyBatis框架中的缓存与缓存的使用改进,首先来回顾一下MyBatis的缓存机制与执行:
    2016-06-06
  • Java多线程用法的实例详解

    Java多线程用法的实例详解

    这篇文章主要介绍了Java多线程用法的实例详解的相关资料,希望通过本文大家能够理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • java 1.8 动态代理源码深度分析

    java 1.8 动态代理源码深度分析

    下面小编就为大家带来一篇java 1.8 动态代理源码深度分析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 解读静态资源访问static-locations和static-path-pattern

    解读静态资源访问static-locations和static-path-pattern

    本文主要介绍了Spring Boot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访问路径以及静态资源处理器的工作原理,通过配置文件和实现`WebMvcConfigurer`接口,可以自定义静态资源目录和访问前缀
    2025-01-01
  • Java中正则表达式split()特殊符号使用详解

    Java中正则表达式split()特殊符号使用详解

    这篇文章主要介绍了Java中正则表达式split()特殊符号使用详解, 文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • SpringSecurity拦截器链的使用详解

    SpringSecurity拦截器链的使用详解

    这篇文章主要介绍了SpringSecurity拦截器链的使用详解,webSecurity的build方法最终调用的是doBuild方法,doBuild方法调用的是webSecurity的performBuild方法,webSecurity完成所有过滤器的插件,最终返回的是过滤器链代理类filterChainProxy,需要的朋友可以参考下
    2023-11-11
  • SpringHateoas超媒体API之资源表示与链接关系详解

    SpringHateoas超媒体API之资源表示与链接关系详解

    本文将深入探讨Spring HATEOAS的核心概念、资源表示方式以及如何构建丰富的超媒体API,帮助开发者创建更具自描述性和可发现性的Web服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • SpringMVC JSON数据交互及RESTful支持实现方法

    SpringMVC JSON数据交互及RESTful支持实现方法

    这篇文章主要介绍了SpringMVC JSON数据交互及RESTful支持实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 字节二面SpringBoot可以同时处理多少请求

    字节二面SpringBoot可以同时处理多少请求

    这篇文章主要为大家介绍了字节二面之SpringBoot可以同时处理多少请求面试分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论