天天看点

AOP Aspect Oriented Programming 面向切面编程 Spring

AOP的概述

什么是AOP的技术?

Aspect Oriented Programming 的缩写 意为:面向切面编程。

AOP是一种编程范式,属于软件工程范畴。指导开发者如何组织程序结构。

利用AOP

  1. 可以对业务逻辑进行隔离
  2. 降低耦合度
  3. 提高程序的可重用性。
  4. 提高开发效率

AOP的优势

  1. 减少重复代码
  2. 提供开发的效率
  3. 维护方便

AOP的底层原理

AOP底层既是代理技术

  1. JDK动态代理 编写的程序必须要有接口
  2. cglib代理技术 生成类的子类

AOP专业术语

  1. Joinpoint(连接点) 所谓连接点是指那些被拦截到的点,在spring中指的是方法。因为spring只支持方法类型的连接点
  2. Pointcut(切入点) 所谓切入点是指我们要对那些Joinpoint(连接点)进行拦截的定义
  3. Advice(通知/增强) 通知是指拦截到Joinpoint(连接点)之后所要做的事情就是通知。通知分为:
    1. 前置通知
    2. 后置通知
    3. 异常通知
    4. 最终通知
    5. 环绕通知(切面要完成的功能)
  4. Target(目标对象) 代理的目标对象
  5. Weaving(织入) 是指把增强应用到目标对象来创建新的代理对象的过程
  6. Proxy(代理) 一个类被AOP织入增强后,就产生一个结果代理类
  7. Aspect(切面) 是切入点和通知的结合,需要自己填写和配置
何谓切面Aspect

切面 = Pointcut切入点 + Advice增强

类 = 编写配置文件 + 编写方法

教程详解

  1. 编写切面类
  2. 编写增强方法
  3. 配置Spring文件
    AOP Aspect Oriented Programming 面向切面编程 Spring
最终通知 after

目标对象方法执行成功或者失败 都会增强类似finally

后置通知 after-returning

目标对象方法执行成功 才会增强

异常通知 after-throwing

目标对象方法执行失败 才会增强

环绕通知 around

自己决定增强的位置 如果使用了环绕通知,目标对象的方法默认不执行,需要手动执行目标方法