Spring Aspect Oriented Program

一、实现方式种类:

  1. 基于jdk动态代理

  2. cglib

二、两者区别:

  1. jdk动态代理需要实现 InvocationHandler

  2. cglib 无需实现接口,使用字节码技术去修改class文件使继承

三、注解使用:

  1. Before("execution(*包名*)")

  前置建议,它是在执行一个业务方法之前插入的切面

  2. After

  当方法执行成功或者出现异常的时候都会执行切面

  3. AfterReturning

  代码正常结束前返回

  4. AfterThrowing

  代码出现异常时会执行

  5. Around

  = Before + AfterReturning

  它相当于一个AOP链,如果当前AOP执行后,就让下一个AOP执行

四. execution语法介绍

  • execution(public * *(..))
  • execution(* set*(..))
  • execution(* com.xyz.service.AccountService.*(..))
  • execution(* com.xyz.service..*.*(..))
  • 上面只是举例说明了execution的语法,下面是一个标准的语法定义
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)

 

posted on 2019-12-14 23:33  waytods  阅读(131)  评论(0编辑  收藏  举报