Spring之IoC原理

在采用面向对象方法设计的系统中,都是通过底层的N个对象相互合作来实现系统的业务逻辑的。

底层的N个对象就像上图中的齿轮,通过齿轮间的相互啮合来实现合作,协同工作,共同完成某项任务。如果一个齿轮出现问题,那么就会对其他齿轮的正常工作带来影响,这就是所谓的牵一发而动全身。这种啮合关系跟对象与对象之间或者模块与模块之间的耦合关系很类似,如果其中一个对象或者模块出现问题,都会导致整个系统出现问题。为了降低对象之间的耦合度,于是就有专家提出了IoC理论,Spring就是一个应用了IoC理论的框架。

IoC(Inversion of Control)是控制反转的意思,传统的实现对象与对象之间的依赖关系,比如A对象想要调用B对象来实现某个业务逻辑,都是通过new一个B对象或者是使用一个已经存在的B对象,这样控制权在A对象自己手里,而应用了IoC理论的Spring框架则是将这种依赖关系交给第三方容器(IoC容器)来实现对象与对象之间的解耦,下图就是应用了IoC理论以后对象与对象之间的依赖关系效果图:

通过引入第三方容器(IoC容器)以后,A对象与B对象之间的直接依赖就变成了A和B共同依赖IoC容器,当A对象在需要用到B对象的时候,就由IoC容器来帮A对象创建一个B对象,而不是直接由A对象自己来创建,这样对象的控制权就交给了第三方(IoC容器)了,IoC容器就变成了整个系统的核心了,IoC容器就跟“粘合剂”一样,将整个系统中的所有对象“粘合”在一起,这也就是许多人把IoC容器称作“粘合剂”的原因。

那么为什么IoC容器又有个别名叫DI(Dependency  Injection)依赖注入呢?实际上他们俩是从不同角度来看待同一个问题,就是指通过IoC容器,将依赖关系注入的方式,来实现对象之间的解耦。

使用IoC可以给我们带来如下好处:

1.可维护性好,便于进行单元测试,每一个class都可以单独测试,互不影响,这样组件之间就可以实现低耦合或者无耦合。

2.便于大型项目的团队分工,提高效率。

3.提高了模块的复用性。

4.使模块具有热插拔性。

参考资料:http://blog.csdn.net/m13666368773/article/details/7802126

欢迎关注行者摩罗微信公众号(xingzhemoluo),共同交流编程经验,扫描下方二维码即可;

时间: 2024-08-06 17:04:02

Spring之IoC原理的相关文章

spring容器IOC原理解析

原理简单介绍: Spring容器的原理,其实就是通过解析xml文件,或取到用户配置的bean,然后通过反射将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这些bean.下面是一段简单的模拟代码: [java] view plain copy package com.tgb.spring.factory; import java.util.HashMap; import java.util.List; import java.util.Map; import or

Spring的IOC原理

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

Spring的IOC原理(转载)

在网上看到一篇文章,感觉写得挺不错的,转载一下,本文转载自:http://www.cnblogs.com/xdp-gacl/p/3707631.html 一. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针.分针和秒针顺时针旋转,从而在表盘上产生正确的时间.图1中描述的就 是 这样的一个齿轮组,它拥有多个独立的齿轮,

Spring的IOC原理[通俗解释一下]

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

通俗解释一下Spring的IOC原理

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

Spring的IOC原理(转)

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

Spring之IOC原理及代码详解

一.什么是IOC 引用 Spring 官方原文:This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) [1] principle. IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies, that is, the o

一点一点学架构(三)——Spring.NET IOC

IOC背景介绍 传统的实现: 由程序内部代码来控制类与类之间的关系(如:在一个具体的类中,调用另一个类的方法). 使用new关键字来实现两个类之间关系的组合. 这种实现方式会造成类之间耦合. IOC的实现: 它将类间关系从程序内部提到外部容器,也就是说由容器在运行期将类间的某种依赖关系动态注入类中. 对象A依赖于对象B,当对象 A需要用到对象B的时候,IOC容器就会立即创建一个对象B送给对象A. IOC容器就是一个对象制造工厂,你需要什么,它会给你送去,你直接使用就行了,而再也不用去关心你所用的

【SSH进阶之路】Spring的IOC逐层深入——源码解析之IoC的根本BeanFactory(五)

我们前面的三篇博文,简单易懂的介绍了为什么要使用IOC[实例讲解](二).和Spring的IOC原理[通俗解释](三)以及依赖注入的两种常用实现类型(四),这些都是刚开始学习Spring IoC容器时的基础内容,当然只有有了这些基础,我们才能走到今天更加详细的解析Spring的源码,深入理解IOC. 这篇我先简单的复习一下IoC,然后根据实例介绍IoC最基本的原理.废话少说,下面我们开始这篇博文的话题: 什么是IoC IoC容器,最主要的就是完成对象的创建以及维护对象的依赖关系等. 所谓控制反转