Spring AOP概述

横切关注点(cross-cutting point),散布于应用中多处的功能。从概念上讲是与应用的业务逻辑分离的。把横切关注点与业务逻辑分离是面向切面编程所解决的问题。

切面帮助我们模块化横切关注点。

通知(advice),定义了切面是什么以及何时使用。Spring有5种类型的通知。

  • 前置通知
  • 后置通知
  • 返回通知
  • 异常通知
  • 环绕通知

连接点(join point),在应用执行过程中能插入切面的一个点,可以是调用方法时、抛出异常时、修改一个字段时。切面代码利用这些点插入到应用的正常流程中,添加新行为。

切点(pointcut),用来匹配通知所要织入的一个点或多个连接点。通常使用类和方法名来指定这些切点。

切面(aspect),通知和切点的结合,共同定义切面的全部内容,是什么,在何时和何处完成功能。

引入(introduction),允许我们向现有类添加新方法和属性。

织入(weaving),把切面应用到目标对象并创建新的代理对象的过程。切面在指定的连接点被织入目标对象中,在声明周期里有多个点可以织入:

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

Spring对AOP的支持

Spring提供了4中类型的AOP支持:

  • 基于代理的经典的SpringAOP
  • 纯POJO切面
  • @AspectJ注解驱动的切面
  • 注入式AspectJ切面

Spring所创建的通知都是用标准的Java类编写的。

Spring在运行期把切面织入到Spring管理的bean中

因为Spring基于动态代理,所以Spring只支持方法连接点。

通过切点来选择连接点

在SpringAOP中,使用AspectJ的切点表达式语言来定义切点。

 

posted on 2019-06-09 21:29  nyk1234  阅读(210)  评论(0编辑  收藏  举报

导航