一文带你熟悉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 ... 
随机推荐
- Nginx笔记总结三:内核参数优化
			net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1800 net.ipv4.ip_conntrack_max = 16777216 ... 
- 使用wget获取其他服务器上的文件
			http://www.cnblogs.com/tankblog/p/6081521.html 
- spring+mybatis+mysql5.7实现读写分离,主从复制
			申明:请尽量与我本博文所有的软件版本保持一致,避免不必要的错误. 所用软件版本列表:MySQL 5.7spring5mybaties3.4.6 首先搭建一个完整的spring5+springMVC5+ ... 
- Tian Tian 菾菾 导游 陪同
			自画像系列是梵高的代表作之一,他是一位自学成才的画家,下笔完全自由,主观提取了当时印象派画家学到的技巧,在这幅画中,我们可以看到,颜色在画中的堆叠,色彩与笔在画中表现的形态,都表现出,梵高在他作画中内 ... 
- Android下的定时任务
			Android中的定时任务一般有两种实现方式,一种是使用JavaAPI里的Timer类,另一种是使用android的Alarm机制. 这两种方式在多数情况下都能实现类似的效果,但Timer有一个明显的 ... 
- Spring源码分析-BeanFactoryPostProcessors 应用之 PropertyPlaceholderConfigurer
			BeanFactoryPostProcessors 介绍 BeanFactoryPostProcessors完整定义: /** * Allows for custom modification of ... 
- 硬件小白学习之路(1)稳压芯片LM431
			图稳压芯片LM431简介 偶然的机会接触到LM431这个芯片,周末晚上打发无聊的时光,查资料进行剖析. LM431的Symbol Diagram和Functional Diagram如图1所示,下面分 ... 
- django之初建项目
			一.项目预览 1.在创建项目之前,必须先进入虚拟环境,因为我们的包安装在我们的虚拟环境中,不在我们的中环境中 >>> ./venv/Scripts/activate 2.创建一个项目 ... 
- AI:深度学习用于文本处理
			同本文一起发布的另外一篇文章中,提到了 BlueDot 公司,这个公司致力于利用人工智能保护全球人民免受传染病的侵害,在本次疫情还没有引起强烈关注时,就提前一周发出预警,一周的时间,多么宝贵! 他们的 ... 
- 使用HBuilder开发移动APP:ajax调用接口数据
			既然要做APP,与接口交互式少不了的,除非只是想做一个纯静态的APP.所以html5+的环境准备好后,我最先开始研究的就是如何与接口交互. 使用HBuilder新建示例教程后,里面会有一个ajax(网 ... 
