Spring的IOC:

IOC是Spring的一个核心组件,理解IOC是迈向Spring大门的重要一步

现实生活中,我们写字用的笔会有多种颜色,为了做不同的标记,需要用不同颜色的笔。如果只是使用一两种的话那还好说,但如果是要同时用到五六种颜色的笔,会很麻烦。

  • 承接上面问题,既然同时带那么多只笔很麻烦,那么我们可以考虑带多只笔芯、一只笔壳:然后需要哪种就套上哪种,方便携带。

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

  • 我们在开发中,创建的类之间耦合度极高,如下:创建一个笔类,如果要使用红色笔芯就要单独去创建红色笔芯的类,然后再去调用。
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的更多相关文章

  1. 一文带你熟悉JAVA IO这个看似很高冷的菇凉

    Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 N ...

  2. 数据可视化之powerBI基础(七)一文带你熟悉PowerBI建模视图中的功能

    https://zhuanlan.zhihu.com/p/67316729 PowerBI 3月的更新,正式发布了建模视图,而之前只是预览功能.新的建模视图到底有什么用,下面带你认识一下它的主要功能. ...

  3. Istio是啥?一文带你彻底了解!

    原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...

  4. 【转帖】Istio是啥?一文带你彻底了解!

    Istio是啥?一文带你彻底了解! http://www.sohu.com/a/270131876_463994 原始位置来源: https://cizixs.com 如果你比较关注新兴技术的话,那么 ...

  5. 【项目实践】一文带你搞定Spring Security + JWT

    以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...

  6. 一文带你读懂什么是vxlan网络

    一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...

  7. 一文带你读懂zookeeper在大数据生态的应用

    一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...

  8. 一文带您了解5G的价值与应用

    一文带您了解5G的价值与应用 5G最有趣的一点是:大多数产品都是先有明确应用场景而后千呼万唤始出来.而5G则不同,即将到来的5G不仅再一次印证了科学技术是第一生产力还给不少用户带来了迷茫——我们为什么 ...

  9. 一文带你了解elasticsearch

    一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36   elasticsearch es基本概念 es术语介绍 文档Document ...

随机推荐

  1. application.properties和application.yml

    1.application.properties 文件和 application.yml 文件优先级: 当同时存在时,那application.yml 只是个摆设. 2.yml文件的好处,天然的树状结 ...

  2. JS Style Guide_1

    当你在回调函数里要使用函数表达式时,尽量使用箭头函数,比如数组中的 Map.filter.reduce等的回调函数中 [1,2,3].map((x) => { let y = x + 1; re ...

  3. Spring Boot中application.properties和application.yml文件

    application.properties和application.yml文件可以放在一下四个位置: 外置,在相对于应用程序运行目录的/congfig子目录里. 外置,在应用程序运行的目录里 内置, ...

  4. <USACO09JAN>气象测量/气象牛The Baric Bovineの思路

    我..莫名其妙搞出来的 随便搞搞..幻想中的dp结果对了 我也很迷茫 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并 ...

  5. 从2019-nCoV趋势预测问题,联想到关于网络安全态势预测问题的讨论

    0. 引言 在这篇文章中,笔者希望和大家讨论一个话题,即未来趋势是否可以被精确或概率性地预测. 对笔者所在的网络安全领域来说,由于网络攻击和网络入侵常常变现出随机性.非线性性的特征,因此纯粹的未来预测 ...

  6. MongoDB监控及报警

    转载请注明出处:https://www.cnblogs.com/shining5/p/11142357.html MongoDB监控及报警 Prometheus是由SoundCloud开发的开源监控报 ...

  7. 从0开发3D引擎(十一):使用领域驱动设计,从最小3D程序中提炼引擎(第二部分)

    目录 上一篇博文 本文流程 回顾上文 解释基本的操作 开始实现 准备 建立代码的文件夹结构,约定模块文件的命名规则 模块文件的命名原则 一级和二级文件夹 api_layer的文件夹 applicati ...

  8. MVC07

    1. 讲解ASP.net MVC的I/O操作 新建一个控制台程序,输入代码如下 using System; using System.IO; namespace IO { class Program ...

  9. golang切片

    切片与数组 go的数组是这样的 array := [3]int{1,2,3} array := [...]int{1,2,3} go的切片 array := []int{1,2,3} //1 arra ...

  10. python如何在图片上添加文字(中文和英文)

    Python在图片上添加文字的两种方法:OpenCV和PIL 一.OpenCV方法 1.安装cv2 pip install opencv-python 2.利用putText方法来实现在图片的指定位置 ...