云乐国鑫

面向切面的spring

【什么是面向切面编程】

横切关注点可以被描述为影响应用多处的功能。

clip_image001

AOP术语

clip_image002

通知(Advice)

  • 前置通知(Before):在目标方法被调用之前调用通知功能。
  • 后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么。
  • 返回通知(After-returning):在目标方法成功执行之后调用通知。
  • 异常通知(After-throwing):在目标方法抛出异常后调用通知。
  • 环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。

连接点(Join point)

应用执行过程中能够插入切面的一个点。

切点(Pointcut)

切点的定义会匹配通知所要织入的一个或多个连接点。

切面(Aspect)

切面是通知和切点的结合。

引入(Introduction)

允许向现有的类添加新方法或属性。

织入(Weaving)

织入是把切面应用到目标对象并创建新的代理对象的过程。在目标对象的生命周期里有多个点可以进行织入:

  • 编译期:切面在目标类编译时被织入。
  • 类加载期:切面在目标类加载到JVM是被织入。
  • 运行期:切面在应用运行的某个时刻被织入。

spring对aop的支持

  • 基于代理的经典spring aop。
  • 纯POJO切面。
  • @AspectJ注解驱动的切面。
  • 注入式AspectJ切面(适用于spring各版本)。

spring通知是java编写的

spring在运行时通知对象

spring只支持方法级别的连接点

【通过切点来选择连接点】

通知和切点是切面的最基本元素。

clip_image003

编写切点

在切点中选择bean

【使用注解创建切面】

定义切面

clip_image004

创建环绕通知

处理通知中的参数

通过注解引入新功能

clip_image005

【在XML中声明切面】

clip_image006

声明前置和后置通知

声明环绕通知

为通知传递参数

通过切面引入新的功能

【注入AspectJ切面】

posted @ 2016-02-08 14:21  国鑫  阅读(200)  评论(0编辑  收藏  举报
版权所有@snzigod