一文带你熟悉SpringIOC
Spring的IOC:
IOC是Spring的一个核心组件,理解IOC是迈向Spring大门的重要一步

现实生活中,我们写字用的笔会有多种颜色,为了做不同的标记,需要用不同颜色的笔。如果只是使用一两种的话那还好说,但如果是要同时用到五六种颜色的笔,会很麻烦。
- 承接上面问题,既然同时带那么多只笔很麻烦,那么我们可以考虑带多只笔芯、一只笔壳:然后需要哪种就套上哪种,方便携带。

- 这就类似于Spring的IOC,IOC翻译过来就是“控制反转”:我们需要搞清楚两个点(控制什么?谁来控制)*
- 控制什么?就跟我们控制笔芯颜色一样,SpringIOC控制的是对象之间的依赖关系。
- 谁来控制?在没有使用一壳多笔芯之前,我们使用哪一种笔都是制造商来提供的;而在使用了之后,就反转成了由我们使用者自己来控制了。

- 我们在开发中,创建的类之间耦合度极高,如下:创建一个笔类,如果要使用红色笔芯就要单独去创建红色笔芯的类,然后再去调用。
public class pen {
private Refill refill = new RedRefill();
public void use(){
System.out.println("使用红色笔芯的笔");
}
}
上面是创建红色笔芯的类,但如果要创建蓝色笔芯、黑色笔芯则要额外去进行编写:
public class pen {
private Refill refill = new BlueRefill();
public void use(){
System.out.println("使用蓝色笔芯的笔");
}
}
public class pen {
private Refill refill = new BlackRefill();
public void use(){
System.out.println("使用黑色笔芯的笔");
}
}
缺点:耦合度太高,重复代码量多,用得不爽。
- 那么,IOC控制的是:在创建笔对象时把红色笔芯的对象注入进去笔壳对象,这就是控制对象之间的依赖关系,而这个过程不用我们自己做,SpringIOC自动帮我们做好:
因为是一个对象注入另一个对象,所以我们也把这种现象称为依赖注入,即DI()Dependency Injection)。 - 控制的对象也发生了变化,对象的控制权交由了IOC容器,我们需要做的:是去编写一些IOC的配置文件,然后负责使用IOC创建这个对象就好了。
最后我们来总结以下:IOC是Spring的一个核心组件,理解IOC是迈向Spring大门的重要一步。IOC即控制反转,我们平时创建对象的脏活以后都由IOC来完成,因此代码之间的耦合度将显著降低。随心所欲的创建,随心所欲的玩起Spring吧。
一文带你熟悉SpringIOC的更多相关文章
- 一文带你熟悉JAVA IO这个看似很高冷的菇凉
Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 N ...
- 数据可视化之powerBI基础(七)一文带你熟悉PowerBI建模视图中的功能
https://zhuanlan.zhihu.com/p/67316729 PowerBI 3月的更新,正式发布了建模视图,而之前只是预览功能.新的建模视图到底有什么用,下面带你认识一下它的主要功能. ...
- Istio是啥?一文带你彻底了解!
原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...
- 【转帖】Istio是啥?一文带你彻底了解!
Istio是啥?一文带你彻底了解! http://www.sohu.com/a/270131876_463994 原始位置来源: https://cizixs.com 如果你比较关注新兴技术的话,那么 ...
- 【项目实践】一文带你搞定Spring Security + JWT
以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...
- 一文带你读懂什么是vxlan网络
一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...
- 一文带你读懂zookeeper在大数据生态的应用
一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...
- 一文带您了解5G的价值与应用
一文带您了解5G的价值与应用 5G最有趣的一点是:大多数产品都是先有明确应用场景而后千呼万唤始出来.而5G则不同,即将到来的5G不仅再一次印证了科学技术是第一生产力还给不少用户带来了迷茫——我们为什么 ...
- 一文带你了解elasticsearch
一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36 elasticsearch es基本概念 es术语介绍 文档Document ...
随机推荐
- MariaDB 外键
drop database literatureDB; create database literatureDB; use literatureDB; # 类型表 create table `type ...
- Mybatis工作流程及其原理与解析
Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...
- C\C++ 位域操作
几篇较全面的位域相关的文章: http://www.uplook.cn/blog/9/93362/ C/C++位域(Bit-fields)之我见 C中的位域与大小端问题 内存对齐全攻略–涉及位域的内存 ...
- Spring+Struts2+Mybatis整合
1. 创建项目 2. 添加Spring能力 使用MyEclipse自动加载Struts2和Spring的jar包和配置文件,并在web.xml文件中添加上下文和监听器 web.xml文件如下: < ...
- java集合 list与Set、Map区别
1.List,Set都是继承自Collection接口,Map则不是. 2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉 ,(注意:元素虽 ...
- 解决appium升级后不支持使用name定位的问题
前言 之前一直用的appium1.4版本,最近升级到了1.6突然发现之前的脚本好多都跑失败了,一看报错: selenium.common.exceptions.InvalidSelectorExcep ...
- Hexo搭建总结
Hexo搭建过程记录 1.Hexo基本环境搭建 1.Hexo安装前提 Node.js和Git,他们的安装方法可以自行百度. 2.具体安装步骤可以参考: https://www.cnblogs.com/ ...
- markdoen语法
# 标题1 ## 标题2 ### 标题3 #### 标题4 ##### 标题5 ###### 标题6 1. 有序列表1 2. 有序列表2 <!--more--> + 无序列表 * 无序列表 ...
- 改进"尽最大努力交付"的服务
改进"尽最大努力交付"的服务 网络层的作用就是负责在不同的网段尽力转发数据包,但是负责中专数据包的路由器并不关心数据包的内容和优先顺序.而是先到达的数据包先处理,后到达的数据包排队 ...
- python爬虫所遇问题列举
1.通过python socket库来构造请求报文,向服务器发送图片请求时 (1)图片在浏览器请求头中的remote address信息跟通过python socket输出远程连接地址和端口号不一致 ...