演示:
(1)还原原项目的saveUser方法,不抛异常
(2)在配置文件中注释掉原先的4种通知配置,新增环绕通知配置
(3)在Logger中添加环绕通知的方法
(4)测试执行
(5)我们会发现问题:
当我们配置了环绕通知,环绕通知里的代码执行了,但切入点方法没有执行
原因:有动态代理可知,环绕通知指的是invoke方法,并且里面有明确的切入点方法调用,二我们现在的环绕通知没有明确的切入点方法调用.
解决:
spring为我们提供了一个接口:ProceedingJoinPoint.该接口可以作为环绕通知的方法参数来使用.
在程序运行时,spring会为我们提供该接口的实现类,供我们使用
该接口中有一个方法叫proceed(),它的作用等同于method.invoke,就是明确调用业务层的核心方法(切入点方法)
(6)测试
(7)修改为发生异常测试