内容简介:Spring面向切面编程(AOP-execution表达式)
1.execution表达式
execution(* com.loongshawn.method.ces..*.*(..))
注意:markdown中符号“*”是加粗,因此输出“*”符号需要进行转义“*”。
表达式结构解释如下:
| 标识符 | 含义 |
|---|---|
| execution() | 表达式的主体 |
| 第一个“*”符号 | 表示返回值的类型任意 |
| com.loongshawn.method.ces | AOP所切的服务的包名,即,需要进行横切的业务类 |
| 包名后面的“..” | 表示当前包及子包 |
| 第二个“*” | 表示类名,*即所有类 |
| .*(..) | 表示任何方法名,括号表示参数,两个点表示任何参数类型 |
2.官方文档介绍
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern)
throws-pattern?)
上述表达式结构是Spring官方文档说明,翻译为中文如下,其中除了返回类型模式、方法名模式和参数模式外,其它项都是可选的。
execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)
接下来,结合官方文档中的例子从不同的维度来了解execution表达式。 表达式上方的中文说明为对该表达式的解释,请注意阅读方式。
维度1.通过方法修饰符定义切点
匹配所有的public修饰符的方法:
execution(public * *(..))
维度2.通过方法名定义切点
匹配所有”set”开头的方法:
execution(* set*(..))
维度3.通过类定义切点
匹配AccountService 接口的所有方法:
execution(* com.xyz.service.AccountService.*(..))
维度4.通过包定义切点
匹配service包中的所有方法:
execution(* com.xyz.service. . (..))
匹配service包及其子包中的所有方法:
execution(* com.xyz.service.. . (..))
维度5.通过方法入参定义切点
切点表达式中方法入参部分比较复杂,可以使用”*”和“..”通配符,其中“*”表示任意类型的参数,而“..”表示任意类型参数且参数个数不限。
匹 配joke(String,int)方法,且joke()方法的第一个入参是String,第二个入参是int。如果方法中的入参类型是Java.lang包下的类,可以直接使用类名,否则必须使用全限定类名,如joke(java.util.List,int);
execution(* joke(String,int))
匹 配目标类中的joke()方法,该方法第一个入参为String,第二个入参可以是任意类型,如joke(Strings1,String s2)和joke(String s1,double d2)都匹配,但joke(String s1,doubled2,String s3)则不匹配;
execution(* joke(String,*))
匹配目标类中的joke()方法,该方法第 一个入参为String,后面可以有任意个入参且入参类型不限,如joke(Strings1)、joke(String s1,String s2)和joke(String s1,double d2,Strings3)都匹配。
execution(* joke(String,..))
匹 配目标类中的joke()方法,方法拥有一个入参,且入参是Object类型或该类的子类。它匹配joke(Strings1)和joke(Client c)。如果我们定义的切点是execution(*joke(Object)),则只匹配joke(Object object)而不匹配joke(Stringcc)或joke(Client c)。
execution(* joke(Object+))
3.官方文档截图
Aspect Oriented Programming with Spring–>11.2.3 Declaring a pointcut
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
本文仅对官方文档做了翻译及简要说明,需要在实际使用过程中加深印象及理解。
以上所述就是小编给大家介绍的《Spring面向切面编程(AOP-execution表达式)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book, Vol. 2
Patrick McNeil / How / 2010-9-19 / USD 30.00
Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!