TypechoJoeTheme

IT技术分享

统计
SSH

Spring AOP 面向切面编程

2015-05-30
/
0 评论
/
749 阅读
/
正在检测是否收录...
05/30

AOP专门用于系统中处理各个模块当中,分布于各个不同的方法当中交叉关注点的问题。

AOP将应用系统分为两个部分:核心业务逻辑和横向的通用逻辑(所谓的“方面”),例如持久化管理、事务管理、安全管理、日志管理以及调试管理,在Spring当中提供了面向切面编程丰富的支持,允许分离业务的应用逻辑与系统级的服务,进行内聚性的开发,应用对象只实现它们的业务逻辑而不必关心其它。

一、AOP和OOP的关系

AOP是对OOP面向对象便编程的一种有益的补充和延续。

OOP是从静态角度考虑程序结构,AOP是从动态角度考虑程序运行过程,是对业务处理过程中的切面进行提取,所面对的是处理过程中的某个步骤或者阶段,研究的是动态的领域。

二、主要功能

用于系统级别的功能,例如日志记录、性能统计、安全控制、事务处理、异常处理等功能,将这些从业务逻辑中划分出来,通过对这些行为的分离,将其独立到非业务性逻辑方法中,从而在改变这些行为的时候不影响业务代码的处理,即将常用的服务模块化,并且用声明的方式将这些组件应用到其它的组件当中去。从而每一个业务逻辑组件只需要关心自己的业务逻辑,而不必了解一些常用的服务组件,从而保证了更高的内聚性。使用AOP,可以是用切面的方法注入程序,通常主程序的目的不在于处理这些切面的功能,所以AOP可以有效的防止代码混乱。

AOP专门用于处理系统中分布于各个模块中的交叉关注点的问题,在J2EE应用中,常常通过AOP来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP已经成为一种非常常用的解决方案

三、AOP代理

AOP代理其实是由AOP框架动态生成的一个对象,该对象可作为目标对象使用。AOP代理在特定切入点添加了增强处理,并回调了目标对象的方法。代理对象的方法=增强处理+被代理对象的方法。

需要程序员参与的只有三个部分:

1、定义普通业务组件

2、定义切入点,一个切入点可能会横切多个业务组件

3、定义增强处理,就是在AOP框架为普通业务组件植入的处理动作

四、几个关键概念

  • 1、切面(Aspect)

一个关注点的模块化,这个关注点可能会横切多个对象。切面可以使用基于模式的和基于切面的注解方式来进行实现。

  • 2、连接点(Join Point)

在程序执行中某个特定的点。一个连接点总是表示一个方法的执行,简单点说,就是加入“切入”的那个点。

  • 3、通知(Advice)

在切面的摸个特定连接点上执行的动作。包括around,before,after等不同类型的通知。许多AOP的框架都是用拦截器作为通用模型。并且维护一个以连接点为中心的拦截器链。

  • 4、切入点(Point Cut)

是匹配连接点的,通知和一个切入点表达式并联,并在满足这个切入点的连接点上运行。切入点表达式如何和连接点匹配是AOP的核心

  • 5、引入(Introduction)

给一个类型声明额外的方法和属性,Spring允许应用新的接口到任何被代理的对象

  • 6、目标对象(Target Object)

被一个或者多个切面所通知的对象,也被称作被通知对象,是一个被代理对象

  • 7、AOP代理(AOP Proxy)

AOP代理就是AOP框架所创建的对象,它用来实现切面契约。在Spring当中,AOP代理可以是JDK动态代理或者Cglib代理

  • 8、织入(Weaving)

把切面连接到其他应用程序类型或者对象之上,并创建一个被通知的对象,可以在编译、类加载或者运行的时候来完成。Spring采用在运行的时候来织入。

朗读
赞 · 0
版权属于:

IT技术分享

本文链接:

https://idunso.com/archives/212/(转载时请注明本文出处及文章链接)