AspectJ框架中各种通知的使用方法

目录

  • 通知种类
  • 案例分析
    • 前置通知
    • 后置通知
    • 环绕通知
    • 异常通知
    • 最终通知
    • 通知中的JoinPoint参数


通知种类


通知种类 注解
前置通知 @Before
后置通知 @AfterReturning
环绕通知 @Around
异常通知 @AfterThrowing
最终通知 @After

案例分析


项目结构
AspectJ框架中各种通知的使用方法

接口
AspectJ框架中各种通知的使用方法

目标类
AspectJ框架中各种通知的使用方法

测试类
AspectJ框架中各种通知的使用方法

配置文件
AspectJ框架中各种通知的使用方法

在pom.xml文件中添加依赖
AspectJ框架中各种通知的使用方法

前置通知


前置通知在目标方法之前执行

切面类
AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

后置通知


后置通知在目标方法之后执行,如果目标方法出现异常那么后置通知不会执行

切面类
AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

环绕通知


环绕通知可以同时在目标方法之前和之后执行,并且可以规定是否执行目标方法,环绕通知可以改变目标方法返回值

切面类
AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

修改目标类返回值

目标类
AspectJ框架中各种通知的使用方法

切面类
AspectJ框架中各种通知的使用方法

测试类
AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

异常通知


异常通知只有在目标方法抛出异常时才会执行

切面类
AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

因为目标方法中没有异常所以异常通知不会执行,修改目标方法,添加一个异常
AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

最终通知


最终通知总是会被执行,无论目标方法是否出现异常。最终通知在目标方法之后执行

切面类
AspectJ框架中各种通知的使用方法

测试结果

目标方法没有异常
AspectJ框架中各种通知的使用方法

目标方法出现异常
AspectJ框架中各种通知的使用方法
不管目标方法是否出现异常,最终通知都会执行



通知中的JoinPoint参数


上面所列举的不同类型的通知都可以使用一个参数来获取目标方法的名称,参数等信息,参数类型为JoinPoint,该参数必须放在通知的首位,不能放在其他位置

举个栗子

使用JoinPoint参数获取目标方法的名称和参数

切面类

AspectJ框架中各种通知的使用方法

测试结果
AspectJ框架中各种通知的使用方法

上一篇:java-Spring-多个方面顺序混乱


下一篇:让eclipse使用Maven编译/编织我的代码