【原创】软件编程指南 2020-07-05
废话不多说,AOP实战中必须要懂得API语法。API只是工具,无须死记硬背,收藏整理即可
文章内容已上传Github: https://github.com/lxchinesszz/spring-learning
一、常用注解
二、切面表达式
三、API使用案例
1. within
a. API说明
- 精确匹配类名
- 模糊匹配包中所有的类
- 模糊匹配包中所有的带Impl后缀的
b. 目录
c. 拦截代码
2. @within
a. API说明
拦截被指定注解标注的类
b. 目录
c. 拦截代码
3. this
a. API说明
拦截指定的类
b. 目录
c. 拦截代码
4. args
a. API说明
Person类中有两个info方法,但是入参不一样,假如要拦截指定入参的方法时候,就可以使用args
b. 目录
c. 拦截代码
可以看到args 和 within可以通过&&来进行,联合匹配。另外可以通过returning方法指定方法的返回值。但是注意,类型要和要拦截的方法的返回类型匹配。否则会报错。
5. @annotation
a. API说明
拦截被指定注解标记的方法。
b. 目录
c. 代码
6. @args
a. API说明
拦截方法中入参被@args指定注解的方法。
b. 目录
c. 代码
注意当出现以下异常说明aop声明的拦截范围太广泛了,导致了一些不能拦截的类被拦截从而报错了,此时只用缩小拦截的范围即可
7. execution
a. API说明
execution()是最常用的切点函数,其语法如下所示:
execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)除了返回类型模式、方法名模式和参数模式外,其它项都是可选的