一,五种通知类型:
通知: 在什么时机执行切面的方法
日常开发不常用,但是面试笔试会经常被问到
五种通知类型
-
After Returning Advice和 After Throwing Advice是互斥的
-
Before Advice 和 After Advice:效果类似于try--catch--finally里的finally块,无论如何都会执行
-
前4种做了解,知道触发时机即可,Around Advice做重点掌握
在这里插入图片描述
引介增强:做了解即可
二,举例说明:
1,后置通知(After Advice):
缺点:无法获取到目标方法运行过程中产生的返回值或内部抛出的异常
使用:
-
定义方法:
在这里插入图片描述 -
配置xml
在这里插入图片描述 - 调用(略)
2,返回后通知(After returning Advice)
-
和后置通知最大区别:可以接受目标方法的返回值
-
后置通知和返回后通知的执行顺序是由xml里的书写顺序决定的,并没有默认执行顺序
-
示例
-
定义方法:有2个返回值
在这里插入图片描述 -
配置xml
在这里插入图片描述 - 调用(略)
3,异常通知(After Throwing Advice)
- 同上,日志的产生顺序按配置顺序来
-
定义方法:(有2个参数)
在这里插入图片描述 -
xml文件进行配置
3. -
触发异常通知
在这里插入图片描述 -
运行(略)
4,环绕通知(重点!!)
-
功能最强大的通知,推荐使用
-
注意:环绕通知的方法,需要添加返回值Object(返回值为触发此环绕通知的方法的返回值)
-
proceed()方法-->ProceedingJoinPoin 参数调用此方法后,目标方法才会执行,否则目标方法永远不执行(控制目标方法的核心方法)、(返回值为目标方法的返回值)
-
这里的异常做处理的原因:
通常一个程序中,可能会布局多个通知,如果我们对这里的异常进行捕捉并处理后,后续通知程序无法捕捉此异常,有可能会出现意料不到的问题。
-
配置方法
在这里插入图片描述 -
配置xml文件
在这里插入图片描述
网友评论