首页 > 其他分享 >@Autowired注解在实现类还是接口

@Autowired注解在实现类还是接口

时间:2023-10-18 10:45:09浏览次数:39  
标签:Service Autowired SmsService 接口 注解 public

@Autowired注解在实现类还是接口

首先要清楚@Service是注解在实现类上的,@Service告诉Spring容器,注册一个实例化的类对象,当@Service注解在接口上,是无法对接口实例化的。

@Service
public class xxxImpl implements xxxService

@Autowired本质上注入的也是实现类,但是是根据接口byType的方式寻找接口的实现类,将其注入,所以在形式上@Autowired作用在接口上,换句话说是创建了实现类的对象但引用了接口类型。因为存在多类继承一个接口的情况,若@Autowired直接注解于接口实现类,不利于降低类型之间耦合性,与Spring理念相悖。

@Autowired
private xxxService xxxservice;
  • 若SmsService接口有2个实现类:SmsServiceImpl1SmsServiceImpl2
//@Service按名称注解多个实现类有两种方式
@Sercive("smsServiceImpl1")
public class smsServiceImpl implements SmsService;
@Sercive("smsServiceImpl2")
public class smsServiceImpl implements SmsService;
//或者
@Sercive
public class smsServiceImpl1 implements SmsService;
@Sercive
public class smsServiceImpl2 implements SmsService;
-----------------------------------------------------
// 报错,byName 和 byType 都无法匹配到 bean
@Autowired
private SmsService smsService;

// 正确注入 SmsServiceImpl1 对象对应的 bean
@Autowired
private SmsService smsServiceImpl1;
	
// 正确注入  SmsServiceImpl1 对象对应的 bean
// smsServiceImpl1 就是我们上面所说的名称
@Autowired
@Qualifier(value = "smsServiceImpl1")
private SmsService smsService;

标签:Service,Autowired,SmsService,接口,注解,public
From: https://www.cnblogs.com/chuimber/p/17771510.html

相关文章

  • 数据采集IO卡 软件无线电处理平台:136-KC705E增强版基于FMC接口的 Kintex-7 XC7K325T P
    一、板卡概述   本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持各种接口输入,软件支持windows,Linux驱动。   二、功能和技术指标: 板卡功能参数内容主处理器Xi......
  • 【问题记录】自定义注解处理程序 AbstractProcessor,总是提示版本不匹配
    1  前言最近在看注解处理程序,自己写一个 AbstractProcessor,发现有个莫名的提示:2 解决加上支持的版本即可,唉,折腾人。......
  • Java注解​
    Java注解学习目录:注解(Annotation)概述常见的Annotation示例自定义AnnotationJDK中的元注解利用反射获取注解信息(在反射部分涉及)1、注解概述从JDK5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注解)Annotation其实就是代码里的特殊标记,这些标记可以在编......
  • ecshop | php接入支付宝申报海关接口的总结【避坑】
    第一次对接支付宝的报关接口,害!不明白这个流程是很难接上的,搞了一天半,终于给搞出来了。在这里留下一点文字吧。代码前工作:用支付宝的密钥生成工具生成一对2048的公私钥,这对公私钥用来完成支付宝支付的加签和验签。把公钥上传到开放平台密钥中对应使用的应用接口加签方式中,私钥......
  • SPI 接口 CAN协议控制器 MCP2515/DP2515国产替代芯片DPC15
    can控制器是CAN局域网控制器的简称,为解决现代汽车中众多测量控制部件之间的数据交换而开发的一种串行数据通信总线。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。can控制器最初是为汽车的监测、控制系统而......
  • django服务配置logging 打印接口请求sql日志
    只需要在setting文件下配置:LOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'console':{'class':'logging.StreamHandler',},},......
  • java中接口的实现方式
    目录Java8接口初始化的几种场景通过接口实现类的方式实现1.定义接口2.接口实现3.测试方法通过匿名内部类的来实现接口实现3.测试方法通过方法的引用1.实现通过箭头函数Lambda表达式的方式1.定义接口2.接口实现3.测试方法将接口作为方法参数1.定义一个方法2.调用方法并......
  • 接口性能测试 —— Jmeter并发与持续性压测
    接口压测的方式:1、同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数2、持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种方式可以控制压测周期时间指定并发数例1:设置线程数:10设置执行时间:0设置循环次数:5说明:使10个线程启动并同时运行也就......
  • 如何保证接口的幂等性?
    作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」目录什么是幂等性?为什么需要保证幂等性?接口幂等设计和防止重复提交可以等同吗?常用保证幂等性的措施先select再insert数据库设置唯一......
  • 【前端开发】新版Chrome浏览器接口mock调试技巧,超实用
    给大家分享一个 Chrome117 更新中最实用的一个功能:在Network面板中发送mock请求。修改返回响应数据想要修改接口返回的数据,设置成特定的数据,首先打开 网络(Network) 面板,找到你需要Mock的接口,右键然后选择替换内容(Overridecontent): 这时候浏览器会提示:选择要用来......