目录
- 通知种类
- 案例分析
- 前置通知
- 后置通知
- 环绕通知
- 异常通知
- 最终通知
- 通知中的JoinPoint参数
通知种类
通知种类 | 注解 |
---|---|
前置通知 | @Before |
后置通知 | @AfterReturning |
环绕通知 | @Around |
异常通知 | @AfterThrowing |
最终通知 | @After |
案例分析
项目结构
接口
目标类
测试类
配置文件
在pom.xml文件中添加依赖
前置通知
前置通知在目标方法之前执行
切面类
测试结果
后置通知
后置通知在目标方法之后执行,如果目标方法出现异常那么后置通知不会执行
切面类
测试结果
环绕通知
环绕通知可以同时在目标方法之前和之后执行,并且可以规定是否执行目标方法,环绕通知可以改变目标方法返回值
切面类
测试结果
修改目标类返回值
目标类
切面类
测试类
测试结果
异常通知
异常通知只有在目标方法抛出异常时才会执行
切面类
测试结果
因为目标方法中没有异常所以异常通知不会执行,修改目标方法,添加一个异常
测试结果
最终通知
最终通知总是会被执行,无论目标方法是否出现异常。最终通知在目标方法之后执行
切面类
测试结果
目标方法没有异常
目标方法出现异常
不管目标方法是否出现异常,最终通知都会执行
通知中的JoinPoint参数
上面所列举的不同类型的通知都可以使用一个参数来获取目标方法的名称,参数等信息,参数类型为JoinPoint,该参数必须放在通知的首位,不能放在其他位置
举个栗子
使用JoinPoint参数获取目标方法的名称和参数
切面类
测试结果