同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier

如果一个接口有2个以上不同的实现类, 那么如何Autowire一个指定的实现

1:首先,UserService接口有两个实现类 UserService1UserService2

UserService接口

 

 

2:以下是UserService接口的两个实现类UserService1和UserService2,请注意@service注解的使用方式,这里给每个实现类标注了不同的名称,方便在@Resource注入时区别注入

UserService接口实现类UserService1

 

UserService接口实现类UserService2

 

 

比如一个接口有两个实现类,这时候再按@Autowired的方式去引用, 在同时存在两个实现类的情况下会报错, 这是由于 @Autowired 的特性决定的: @Autowired 的注入方式是 byType 注入, 当要注入的类型在容器中存在多个时,Spring是不知道要引入哪个实现类的,所以会报错。

那么在同一类型拥有多个实现类的时候,如何注入呢?这种场景下,只能通过 byName 注入的方式。可以使用 @Resource 或 @Qualifier 注解。

 @Resource 默认是按照 byName 的方式注入的, 如果通过 byName 的方式匹配不到,再按 byType 的方式去匹配。

 

下面是几种注入方式

1. 通过 @Autowired 和 @Qualifier 配合注入

 

 

 

2:使用@Resource注入,根据@Service指定的名称区分

(flag1是UserService1实现类 @Service("flag1")注解指定的)

 

3. 使用@Resource注入,根据默认类名区分

userService1是UserService1实现类的类名

 


总结:
1、@Autowired 是通过 byType 的方式去注入的, 使用该注解,要求接口只能有一个实现类。
2、@Resource 可以通过 byName 和 byType的方式注入, 默认先按 byName的方式进行匹配,如果匹配不到,再按 byType的方式进行匹配。
3、@Qualifier 注解配合@Autowired 一起使用。

4、@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java类型比较_java 基本数据类型 ==和equals()比较

1.基本类型的存储Java 8种基本类型都是存储在堆栈中,例:int i 1;String str "hello world";也是存储在堆栈中。new基本类型的包装器类型和new String()都是存储在堆内存中。例Integer i new Integer(1);String str new String("hello…

嵌入式操作系统的主要特点都有哪些

嵌入式操作系统(EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式系统分为4层:硬件层、驱动层、…

UIWebView UITextView

// // ViewController.m // 网页 //#import "ViewController.h"interface ViewController ()<UITextFieldDelegate,UIWebViewDelegate> property (weak, nonatomic) IBOutlet UITextField *textFiled; property (weak, nonatomic) IBOutlet UIWebView *webVi…

BeanFactory和ApplicationContext有什么区别?

BeanFactory&#xff1a; 是Spring里面最底层的接口&#xff0c;提供了最简单的容器的功能&#xff0c;只提供了实例化对象和拿对象的功能 ApplicationContext&#xff1a; 应用上下文&#xff0c;继承BeanFactory接口&#xff0c;它是Spring的一各更高级的容器&#xff0c;提…

java的继承实例_Java继承和多态实例

我们知道面向对象的三大特性是封装、继承和多态。然而我们有时候总是搞不清楚这些概念。下面对这些概念进行整理&#xff0c;为以后面向抽象的编程打下坚实的基础。封装的概念还是很容易理解的。如果你会定义类&#xff0c;那么相信你对封装的概念已经完全掌握了。下面定义的几…

【数据库】13种会导致索引失效语句写法

数据库的索引是保证数据快速查询的重中之重&#xff0c;以下13种会导致索引失效语句会导致你的SQL查询索引失效&#xff0c;具体如下&#xff1a;1、使用like关键字模糊查询时&#xff0c;% 放在前面索引不起作用&#xff0c;只有“%”不在第一个位置&#xff0c;索引才会生效&…

yii2史上最简单式安装教程,没有之一

作者&#xff1a;白狼 出处&#xff1a;www.manks.top/article/yii2_install 本文版权归作者&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xff0c;且在文章页面明显位置给出原文连接&#xff0c;否则保留追究法律责任的权利。 最近有小伙伴私聊我&…

java static调用吗_Java中的static的使用

1.Java 中被static修饰的成员称为静态成员或类成员。它属于整个类所有&#xff0c;而不是某个对象所有&#xff0c;即被类的所有对象所共享、且优先于对象存在。静态成员可以使用类名直接访问&#xff0c;也可以使用对象名进行访问。使用 static 可以修饰变量、方法和代码块。2…

15个搞笑的程序员段子

1. 问答Q&#xff1a;你是怎么区分一个内向的程序员和一个外向的程序员的&#xff1f;A&#xff1a;外向的程序员会看着你的鞋和你说话时。Q&#xff1a;为什么程序员不能区分万圣节和圣诞节&#xff1f;A&#xff1a;这是因为 Oct 31 Dec 25&#xff01;&#xff08;八进制的…

java ffmpeg 获取视频时长_Java通过调用FFMPEG获取视频时长

FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0c;为了保证高可移植性和编解码质量&#xff0…

盘点15个搞笑的程序员段子

1.车Delphi象吉普车&#xff0c;什么路上都能开&#xff0c;却在啥路上也开不好&#xff1b;PB就象卡丁车&#xff0c;只能在固定线路上开&#xff0c;到室外就有些不稳&#xff1b;VC象跑车&#xff0c;你开得起却买不 起&#xff0c;而且一旦发生故障&#xff0c;想修都找不到…

判断listview是上滑还是下滑的方法

方法一&#xff1a; 用setOnScrollListener(new AbsListView.OnScrollListener()&#xff09;来实现&#xff0c;判断滑动后显示的第一个条目 &#xff0c;与滑动前的第一个条目的大小来判断&#xff0c; 这种方法逻辑简单&#xff0c;但是必须要滑动到当前第一条目隐藏后才能起…

如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)

分析&#xff1a;这个问题其实换一种问法就是&#xff0c;如何保证消息队列的幂等性&#xff1f;这个问题可以认为是消息队列领域的基本问题。换句话来说&#xff0c;是在考察你的设计能力&#xff0c;这个问题的回答可以根据具体的业务场景来答&#xff0c;没有固定的答案。 回…

SpringBoot:搭建第一个Web程序

本文简单介绍一下spingBoot搭建web程序的流程&#xff0c;希望对入门学习spingBoot的朋友有所帮助。本文采用的开发工具是IDEA。 1、打开IDEA&#xff0c;创建项目。 2、点击创建项目&#xff0c;进入下一步&#xff0c;具体按照画红框的操作。 3、点击下一步 4、点击下一步&am…

java uuid 效率_java uuid第一次性能

在java中产生uuid的方式是使用java.util.UUID。UUID.randomUUID().toString();我在测试redis性能时&#xff0c;使用uuid产生测试数据&#xff0c;发现多线程测试redis的rpush接口的时候&#xff0c;性能老是上不去。 查看cpu利用率也不高&#xff0c;网卡流量也不大。就是tps上…

第八周----补

这一周真不知道过得是什么&#xff0c;除了上课&#xff0c;感觉相当的混乱。 整个人每天都是处在消沉状态&#xff0c;连这次作业都没能很好的补上。 我的心情也像天气一样变得不稳定&#xff0c;一会晴天一会雨天的&#xff0c;更多的就是闷闷的感觉。 总会说事情很多忙的头晕…

SpringBoot:application.properties基本的参数配置

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

java method 注释_Java注解

Java注解注解概述3、注解3.1、注解&#xff0c;或者叫做注释类型&#xff0c;英文单词是&#xff1a;Annotation疑问&#xff1a;注解到底是干啥的&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;3.2、注解Ann…