兄弟们,今日头条搜索
三线城市程序员老陈
关注我,我将持续不断推出视频教程。
背景
上一篇演示了如何使用各类通知,这样我们对切入方法的通知比较了解了,还有一个重要工作是如何指定切面切入哪些方法,这里面就涉及切入点匹配的那个表达式
,官方一点的说法就是切入点指示符
。
Spring AOP的切入点表达式功能很强大,用法也很多,本篇只能是初探,把常用的用法给大家提下,有个初步印象,在做项目的时候,能知道有哪些切入方式。
表达式通配符
需要先认识下切入点表达式中可以使用的通配符
通配符 | 说明 |
---|---|
… | 匹配方法定义中任何数量的参数,还可匹配类定义中任何数量的包 |
+ | 匹配类的任何子类 |
* | 匹配任何数量的字符 |
根据类型匹配
使用within
关键字可匹配类型(包括接口、类、包名)信息,例如:
表达式 | 含义 |
---|---|
within(MyInterface+) | 匹配实现MyInterface接口的类中的所有方法 |
within(org.maoge.service.UserService) | 匹配UserService类中的所有方法 |
within(org.maoge.service…*) | 将匹配org.maoge.service包(含子包)中所有类中的所有方法 |
注意,最终匹配的落脚点还是方法。
根据方法匹配
使用execution
关键字可匹配方法信息,例如:
表达式 | 含义 |
---|---|
execute(* org.maoge.service.UserService.*(…)) | 匹配UserService中的所有方法 |
execute(public * org.maoge.service.UserService.*(…)) | 匹配UserService类中的所有public 方法 |
execute(public String org.maoge.service.UserService.*(…)) | 匹配UserService类中的所有返回值为String 类型的public 方法 |
execution(public org.maoge.xbo.ResultBO *(…)) | 匹配所有返回值为ResultBO 类型的public 方法 |
execution(execution(public**(…)) | 匹配任何返回类型、类名和参数的公共方法 |
根据注解匹配
有时候需要指定一些特殊的方法进行匹配,可以指定匹配方法的注解。
表达式 | 含义 |
---|---|
@annotation(org.maoge.DoneTimeAnnotation) | 匹配使用了DoneTimeAnnotation注解的方法 |
总结
落脚点都是方法,但是可以根据类型、方法、注解进行筛选。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦