Spring -- IOC理论

控制反转(IOC)

IOC(inversion of control)是spring的核心,就是由spring来控制对象的周期和对象间的关系。

  • 传统开发模式:对象间相互依赖,比如A对象中引入B对象,要使用new B();
  • IOC开发模式:将对象之间的依赖关系交给IOC容器来做。

先看下图,我们来了解应该如何来完成一套好的架构

这张图是多个此轮之间相互协作,来完成一项任务。

  • 图一,我们可以看出齿轮与齿轮之间相互依赖,彼此互相耦合,少了哪一个此轮,都会影响正常的工作,这个就类似与我们的传统开发模式
  • 图二,通过IOC容器这个齿轮,带动4个此轮运转,4个此轮之间的依赖关系,完全由中间的大齿轮决定。
  • 图三,去掉了大齿轮,我们可以注意到4个齿轮之间无任何的耦合性,这个状态对于我们软件开发来说,是一个非常理想的状态。
  • 由于齿轮间没有耦合,彼此就完成自己的那部分工作就可以,在我们软件开发中这样是非常重要的,一个大的团队,团队中每个成员不用关心别的成员代码的开发进度,只要将自己的这部分代码完成即可,大大的提高了团队的开发效率。

依赖注入(DI)

其实它是控制反转的另一个名字,只是从不同的角度来进行了说明。

所谓的依赖注入,就是由IOC容器在运行期间,动态的将某种依赖关系注入到对象中,所以依赖注入(DI)和控制反转(IOC)是从不同角度来描述同一件事情,通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦

  • 这里我们可以举一个例子,电脑和U盘之间的关系,电脑与U盘完全是两个单独的对象,他们之间是完全解耦的,当我把U盘插到电脑上的时候,电脑就从U盘读取数据,当我把另一块U盘插在电脑上的时候,它就从另一块电脑上读取数据,在这中间我就起到了一个IOC容器的作用,我来建立哪个电脑和哪个U盘之间的关系。

IOC的好处

看到这里,我想大家自己也能总结出来有哪些好处了。

  • 降低了组件之间的耦合度(见上面图二)
  • 提高了开发效率和产品质量(由于降低了耦合度,不用担心其他模块对你的而影响)
  • 统一标准,提高模块的复用性(模块完全是独立的,谁想用就可以直接用)
  • 模块具有热插拔效果(通IOC配置文件,可以决定对象之间的依赖关系)

总结

IOC理解:

  • IOC控制反转:创建对象实例的控制权由代码控制剥离到IOC容器控制,也就是xml文件控制,侧重于原理。
  • DI依赖注入:创建对象实例时,为这个对象注入属性值或其他对象实例,侧重于实现。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 16:51:43

Spring -- IOC理论的相关文章

[Spring框架]Spring IOC的原理及详解。

这里感谢 CSDN 的原博客:http://blog.csdn.net/m13666368773/article/details/7802126 看后  受益匪浅,这里再重温一遍Spring IOC 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针.分针和秒针顺时针旋转,从而在表盘上产生

[Spring框架]Spring IOC的原理及详解

这里感谢 CSDN 的原博客:http://blog.csdn.net/m13666368773/article/details/7802126 看后  受益匪浅,这里再重温一遍Spring IOC 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针.分针和秒针顺时针旋转,从而在表盘上产生

Spring IOC 原理

一. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针.分针和秒针顺时针旋转,从而在表盘上产生正确的时间.图1中描述的就是 这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合在一起,协同工作,共同完成某项任务.我们可以看到,在这样的齿轮组中,如果有一个齿轮出了问 题,就可能会影响到整个齿轮组的正常运转.齿轮组中齿

Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建

一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框架宗旨:不重新发明技术,让原有技术使用起来更加方便. Spring 几大核心功能 4.1 IoC/DI控制反转/依赖注入 4.2 AOP面向切面编程 4.3 声明式事务. Spring 框架runtime 5.1 test: spring 提供测试功能 5.2 Core Container:核心容器

Spring-简介-IOC理论推导

1.Spring 1.1.简介 Spring:春天----->给软件行业带来了春天! 2002,首次推出了Spring框架的雏形:interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版. Rod Johnson,Spring Framework创始人,著名作者.很难想象Rod Johnson的学历,真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学. Spring理念

Spring IoC/DI

前言 假设项目层次划分包括logic层和dao层,logic层调用dao层完成业务逻辑,dao层一般与数据库交互.定义两个组件,TestLogic和TestDao,分别操作接口ILogic和IDao,这样程序开发时需要考虑怎样管理这两个组件. 传统方式 这种方式中,当TestLogic组件需要调用TestDao组件时,直接使用关键字new IDao testDao = new TestDao(); 这种方式简单直观,但造成了对外部组件的严重依赖,程序高度耦合,效率低下.当项目需要更换组件时需要修

手把手教你实现Spring ioc

手把手教你实现Spring ioc "Don't call us, we'll call you(不要联系我,我会主动联系你)" 这是好莱坞很经典的一句话,应用在ioc(控制反转)领域,发现理解起来相得益彰--你作为用户不需要控制业务实体的生成,交给我容器来控制,这就是控制反转.不过,这样理解起来也有点麻烦,套用面向对象大师Martin Fowler的说法更为贴切: "Dependency Inversion(依赖注入)" 当容器中所有的实体bean 都被管理起来的

Spring IOC的实现

来源:知乎 https://www.zhihu.com/question/21035417/answer/142858103 著作权归作者所有. Spring IOC的实现部分,主要分为三个部分: 第一步: Resouce:首先我们需要获取beanDefinition的资源,我们将通过Spring的resource接口获得bean的资源,这一步也叫做bean资源的定位,下面是Spring内置的一些典型实现,当然,你也可以根据自己的需要实现自己的resource: ClassPathResourc

spring IOC

本节要点: IOC容器概述 IOC容器的工作原理 BeanFactory接口及常用实现类XmlBeanFactory ApplicationContext接口及常用实现类 BeanFactory和ApplicationContext的区别 1  IOC容器概述 Spring的IoC容器实现了控制反转,即在开发过程中,开发人员不需要关心容器是怎样的,也不需要调用容器的任何API.容器会自动进行被管理对象的初始化及对象之间依赖关系的维护. 在Spring中,最重要的是两个包,提供了IoC容器的基本功