IOC(Inversion of Control)控制反转,本来是有应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IOC容器主要使用DI方式实现的,不需要主动产找,对象的查找、定位和创建全部由容器管理。
通俗一点讲就是“不创建对象”。以前我们要调用一个对象的方法,首先要new一个对象,但是用IOC容器,在对象中不直接与对象连接,而是在配置文件中描述要使用哪一个对象,容器负责将这些联系在一起。、
IOC容器的对象实例化是通过配置文件来实现的,术语上叫做注入。
我们现在整个的平台是第一版,写的最简单的3层实现的效果是这样的:
我之后的几个框架图都会省略Model的。这个我们学到的经典三层的时候的代码。
第二版:
这是我们学到的加上了设计模式的第二版的系统架构图,其实也是由经典三层实现的,只不过是加上了Face(外观设计模式),在D层加上了抽象工厂、反射、配置文件,来实现对父类的引用指向子类的对象的。
第三版:
第三版是将外观层用WCF来代替,实现了远程调用,在B层也加上了抽象工厂的方式,B层将不再直接调用D层,而是在D层的前面加上了DbSession,DbSession有两个作用:第一,实现了事物,之后可以实现分布式事物;第二,拿到了D层的所有接口(拿到D层的所有接口,我们就可以实现任意管理D层)。其实说白了Dbsession就是线程,当这个系统跑起来的时候,就开了一个进程,用户每次发出一个http的请求,就会new出一个DbSession,就是new出一个线程。
第三版可以说是经典三层发挥的淋漓了,但是大家可以看到,工厂能帮我们解除各个层之间的耦合,但是也带来了不方便的地方就是工厂太多,我们怎么将工厂去掉,就用到了IOC容器。
第四版:
这个是现在加入了IOC容器的框架图,IOC容器的对象实例化是通过配置文件来实现的。
通过IOC控制反转,大量减少了Factory和Singleton的数量,使代码曾是更加清晰。Spring的IOC容器是一个轻量级的容器,没有侵入性,不需要依赖容器的API,也不需要实现一些特殊接口。而一个合理的设计做好尽量避免侵入性。减少了代码中的耦合,将耦合延迟到了配置文件中,发生了变化也更容易控制。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qiumuxia0921/article/details/47105409