解答为什么@Autowired使用在接口上而不是实现类上
如果Spring配置了<context:component-scan base-package="com.*.service"></context:component-scan>
,并且要注入的接口只有一个实现类的话,那么spring框架可以自动将interface与其实现类组装起来。如果没有配置component scan,那么我们必须在application-config.xml(或等同的配置文件)定义这个bean。
一般情况下一个接口我们只写一个实现类,这个时候我们只需要在实现类上注解@service
@Service
public class UserServiceImpl implements UserService {……
}
在这种情况下,我们要使用这个实现类的时候也只需要用@Autowired
即可
Spring会自动组装userservice与其实现类UserServiceImpl
@Autowired
private Userservice userservice;
但是我们也可能会为一个接口定义多个实现类,这时我们在用@Service时需要为其命名@Service("……")
,也就是给了这个实现类一个id,像这样:
@Service("us1")
public class UserServiceImpl implements UserService {……
}
这种情况下我们用@Autowired
注入时也需要指定id:
@Autowired
@Qualifier("us1")
private Userservice userservice;
综上所述,我个人认为@Autowired使用在接口上而不是实现类上的原因可能是考虑到了一个接口会有多个实现类的情况,当然这也是基于Spring可以将接口与其实现类自动组装的功能
解答为什么@Autowired使用在接口上而不是实现类上相关推荐
- spring为什么是接口注入而不是实现类注入(持续更新)
关于spring注入这里,在开发过程中时常碰到,这里看到有人说的挺好的在这里做一下笔记. 这里虽是接口的注入但实际注入的对象是实现类的对象.如果只是单纯数据注入实现类是可以接收注入对象的,在开放中往往 ...
- 计算机主板nvme接口,m2和NVME在电脑主板上的接口是一样的吗?求懂得人解答
m2和NVME在电脑主板上的接口是一样的吗?求懂得人解答以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! m2和NVME在 ...
- @Autowired一个接口有多个实现类
@Autowired是spring的注解,默认使用的是byType的方式向Bean里面注入相应的Bean.例如: @Autowired private UserService userService; ...
- SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)
场景 SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 设计原则 —— 针对接口编程而不针对实现编程
对"针对接口编程,而不是针对实现编程"的理解 应该针对接口编程 而不是针对实现编程 0. 理解 接口,定义了一堆空实现函数的接口,如下,是对其全部实现类的约束,即必须实现我(接口) ...
- 同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
如果一个接口有2个以上不同的实现类, 那么如何Autowire一个指定的实现 1:首先,UserService接口有两个实现类 UserService1和 UserService2 UserServi ...
- python接口自动化测试二十四:上传多个附件,参数化
python接口自动化测试二十四:上传多个附件,参数化 # 添加多个附件参数化files = [("1.png", "1.png") ("2.png& ...
- linux java mail 时间,Javamail在Windows上工作,而不是在Linux上
因此,简单的非加密的无附件电子邮件在Linux和Windows中都可以使用. 当我尝试发送附件或使用TLS加密发送电子邮件时,javamail会在Linux上崩溃,而不是在Windows上崩溃. Tr ...
- 接口查询的数据生成excel上传到七牛云
接口查询的数据生成excel上传到七牛云 一.注册七牛云并新建一个存储空间 我们公司已经有一个七牛云的账号,登录进去之后创建一个新的对象存储空间.命名为eval_mobile.酒会有一个默认的融合 C ...
最新文章
- [BZOJ1188/Luogu3185][HNOI2007]分裂游戏
- 你不知道的APP色彩跟产品场景的关联因素(干货多图)
- 通过JConsole查看本地远程虚拟机
- 捕捉所有异常_详解Java中异常的分类
- iops 条带深度 队列深度 NCQ
- (pytorch-深度学习系列)简单实现kaggle房价预测-学习笔记
- numpy的常用函数 不断更新
- 新版本vsphere支持最大单个vmdk超过2T,理论上支持最大62T
- form表单提交数据丢失问题
- 使用 Typescript 踩 react-redux 的坑
- java基本类型引用类型_Java基本类型和引用类型
- import sys是什么意思_学了半天,import 到底在干啥?
- Excel怎么锁定单元格
- Linux基础知识小结(一)
- DAY1古典概型和几何概型
- row format delimited fields terminated by ','
- 【SAP Abap】SAP S/4 ABAP OPEN SQL中WITH的应用案例
- 动态分区分配及可重定位分区分配
- 《微波原理与技术》学习笔记3传输线理论-史密斯圆图(Smith Chart)
- Luogu P4844 LJJ爱数数