Spring DI IOC && AOP

Spring的核心技术由两大部分组成:IoC和AOP, IoC即Inversion of Control(控制反转)的简写,它是一种设计模式,Spring只不过是实现了该模式。IoC是工厂模式的升华,同时涉及到了反射的概念。

IoC有多种实现方法,其中,Spring是通过一种名为DI(Dependency Injection,即依赖注入)的方法实现的。

IoC(Inversion of Control):为控制反转。不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。

其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。

简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

 Spring IoC容器实现了IoC设计模式

 1. BeanFactory:位于org.springframework.beans.factory包中。借助于配置文件实现对JavaBean的配置和管理。主要应用于开发Java应用。

 2. ApplicationContext:位于org.springframework.context包中。继承于BeanFactory,增加了IoC集成、处理消息资源、事件等功能。主要用于开发J2EE应用,是Spring推荐使用的接口。

 

oop是静态的抽象,aop是动态的抽象, 

 

aop框架具有的两个特征: 1.各个步骤之间的良好隔离性 2.源代码无关性

 

切入点(pointcut): 切入点是连接点的集合,它通常和装备联系在一起,是切面和程序流程的交叉点。比如说,定义了一个pointcut,它将抛出异常ClassNotFoundException和某个装备联系起来,那么在程序执行过程中,如果抛出了该异常,那么相应的装备就会被触发执行。

装备(advice): 也可以叫做“通知”,指切面在程序运行到某个连接点所触发的动作。在这个动作种我们可以定义自己的处理逻辑。装备需要利用切入点和连接点联系起来才会被触发。

目前AOP定义了五种装备:前置装备(Before advice)、后置装备(After advice)、环绕装备(Around Advice)、异常装备(After throwing advice)、返回后装备(After returning advice)。

目标对象(target object): 被一个或者多个切面装备的对象。所以它有时候也被称为Advised Object。

引入(introduction): 声明额外的成员字段或者成员方法。它可以给一个确定的对象新增某些字段或者方法。

织入(weaving): 将切面和目标对象联系在一起的过程。这个过程可以在编译期完成,也可以在类加载时和运行时完成。Spring AOP是在运行期完成织入的。

切面(aspect): 一个关注点的模块化。它实际上是一段将被织入到程序流程中的一段代码。

 

posted on 2018-11-21 20:02  xiaowater  阅读(95)  评论(0)    收藏  举报

导航