谈Spring的理解
技术旨在理解。
最近风靡的SpringMVC,其实只是Spring的一个组件,充分说明Spring的强大。Spring到底是个什么鬼?用SSH的人很多,但是还真不是谁都能说清Spring的原理。
在SSH框架中Srping充当了管理容器的角色;
Spring容器集中管理Bean的实例化;
关于Spring除了SpringMVC,我们听的最多的是“控制反转IOC”,“依赖注入DI”,“面向切面AOP”
一、依赖注入(Dependecy Injection,DI)和控制反转(Inversion of Control,IOC)是相近的概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中创建被调用者的工作不再由调用者来完成,因此称为【控制反转】。创建被调用者的工作由spring来完成,然后注入调用者,因此也称为【依赖注入】。
1、控制不反转:就是当A需要B时,A就要去new出B来,然后加入到A中。
2、控制反转:就是系统知道A需要B,会提前将B给A,不需要A再要了。——降低耦合
*IOC的别名:依赖注入(DI)
2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dependency Injection)”。他的这个答案,实际上给出了实现IOC的方法:注入。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
*Spring的解耦原理实质上是实现了接口和实现的分离。——斧子TL
转自:http://blog.csdn.net/jiuqiyuliang/article/details/42920573
二、面向切面编程(AOP)
1.面向切面编程提供声明式事务管理
2.spring支持用户自定义的切面
应用:利用它很容易实现如权限拦截,运行期监控等功能