Spring之路(45)–Spring AOP常用的切入点表达式实例

2020/2/19 8:17:33

本文主要是介绍Spring之路(45)–Spring AOP常用的切入点表达式实例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

兄弟们,今日头条搜索三线城市程序员老陈关注我,我将持续不断推出视频教程。

背景

上一篇演示了如何使用各类通知,这样我们对切入方法的通知比较了解了,还有一个重要工作是如何指定切面切入哪些方法,这里面就涉及切入点匹配的那个表达式,官方一点的说法就是切入点指示符

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注解的方法

总结

落脚点都是方法,但是可以根据类型、方法、注解进行筛选。

点击查看更多内容


这篇关于Spring之路(45)–Spring AOP常用的切入点表达式实例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程