05 Spring AOP

AOP 是一种与语言无关的程序思想、编程范式。项目业务逻辑中,将通用的模块以水平切割的方式进行分离统一处理,常用于日志、权限控制、异常处理等业务中。

AOP 注解

  • @Aspect:切面,这个注解标注在类上表示为一个切面

  • @Joinpoint:连接点,被 AOP 拦截的类或者方法

  • @Pointcut:切入点,从哪里开始切入

  • Advice:通知的几种类型

    • @Before:前置通知,在目标方法调用前调用通知功能;

    • @After:后置通知,在目标方法调用之后调用通知功能,不关心方法的返回结果;

    • @AfterReturning:返回通知,在目标方法成功执行之后调用通知功能;

    • @AfterThrowing:异常通知,在目标方法抛出异常后调用通知功能;

    • @Around:环绕通知,通知包裹了目标方法,在目标方法调用之前和之后执行自定义的行为

示例

伪代码表示通知顺序:

try {
    // @Before 执行前通知

    // @Around 执行环绕通知 成功走finall,失败走catch
} finally {
    // @After 执行后置通知

    // @AfterReturning 执行返回后通知
} catch(e) {
    // @AfterThrowing 抛出异常通知
}

实际代码例子,统一日志处理切面 WebLogAspect.java

参考文章: SpringBoot 应用中使用 AOP 记录接口访问日志 Spring Boot 实战系列 AOP 面向切面编程

最后更新于

这有帮助吗?