Spring IOC容器
概念:
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。也不须要实现一些特殊接口。而一个合理的设计做好尽量避免侵入性。降低了代码中的耦合,将耦合延迟到了配置文件里。发生了变化也更easy控制。