@AspectJ切点函数之execution()

execution()是最常用的切点函数,语法如下:

execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)

其中:返回类型模式、方法名模式、参数模式是必选项

通过execution()定义切点的不同方式

1.通过方法签名定义切点

execution(public * *(..))

匹配所有目标类的public方法。 第一个代表返回类型,第二个代表方法名,而..代表任意入参的方法

execution(* *To(..))

匹配目标类所有以To为后缀的方法。 第一个代表返回类型,而To代表任意以To为后缀的方法,而..代表任意入参的方法

2.通过类定义切点

execution(* com.jiuyue.aop.spring.advisor.aspectJ.function.execution.classpoint.Cleaner.*(..))

3.通过类包定义切点

execution(* com.jiuyue.service.impl..*.*(..))
符号 含义
execution() 表达式的主体
第一个”*“符号 表示返回值的类型任意
com.jiuyue.service.impl AOP所切的服务的包名,即,我们的业务部分
包名后面的”..“ 表示当前包及子包
第二个”*“ 表示类名,*即所有类
.*(..) 表示任何方法名,括号表示参数,两个点表示任何参数类型

在类名模式串中,.* 表示包下的所有类,..*表示包、子孙包下的所有类

execution(* com.jiuyue.*(..))

匹配com.jiuyue包下所有类的所有方法

execution(* com.jiuyue..*(..))

匹配com.jiuyue包、子孙包下所有类的所有方法.比如 com.jiuyue.dao ,com.jiuyue.dao.impl,com.jiuyue.service,com.jiuyue.service.impl包下所有类的所有方法都匹配。 当 ..出现在类名中时,必须后面跟*表示子孙包下的所有类。

execution(* com..*Dao.find*(..))

匹配包名前缀为com的任何包下类名后缀为Dao的方法,方法名必须以find为前缀, 比如com.jiuyue.UserDao#findUserById()方法都是匹配切点。

4.通过方法入参定义切点

切点表达式中的方法入参部分比较复杂,可以使用*和..通配符。 其中 *表示任意参数类型的参数, 而..表示任意类型的参数且参数个数不限。

execution(* joke(String,int))

匹配joke(String,int)方法,且joke方法的第一个入参是String,第二个入参是int。 比如 匹配 SmartSeller#joke(String ,int)方法。 如果方法中的入参类型是java.lang包下的,这可以直接使用类名,否则必须使用全限定类名,比如 joke(java.util.List,int)

execution(* joke(String,*))

匹配目标类中的joke()方法,该方法第一个入参为String,第二个入参为任意类型。 比如 joke(String s1, String s2)和joke(String s1,double d)都匹配,但是 joke(String s1, String s2,double d3)不匹配。

execution(* joke(String,..))

匹配目标类中的joke方法,该方法的第一个入参为String,后面可以有任意个入参且入参类型不限。 比如 joke(String s1),joke(String s1,String s2)和joke(String s1,double d2,String s3)都匹配。

execution(* joke(Object+))

匹配目标类中的joke()方法,方法拥有一个入参,且入参是Object类型或该类的子类。 它匹配joke(String s1) 和joke(Client c) . 如果定义的切点是execution(* joke(Object)) ,则只匹配joke(Object object)而不匹配joke(String s1) 或者joke(Client c)。

@AspectJ切点函数之execution()相关推荐

  1. Spring-AOP @AspectJ切点函数之execution()

    文章目录 概述 通过execution()定义切点的不同方式 通过方法签名定义切点 通过类定义切点 通过类包定义切点 通过方法入参定义切点 实例 概述 execution()是最常用的切点函数,语法如 ...

  2. Spring-AOP @AspectJ切点函数导读

    概述 annotation execution args和args within within和target target和this 概述 切点函数是AspectJ表达式语言的核心,也是使用@Aspe ...

  3. @AspectJ切点函数详解

    @AspectJ切点函数详解 1 方法切点函数 1.1 execution() 1.1.1 通过方法签名定义切点 1.1.2 通过类定义切点 1.1.3 通过类包定义切点 1.1.4 通过方法入参定义 ...

  4. Spring-AOP @AspectJ切点函数之@within()和@target

    文章目录 概述 @target(M)的匹配规则 @within(M)的匹配规则 实例 @target @within 注意事项 概述 除了@annotation和@args外,还有另外两个用于注解的切 ...

  5. 说说 Spring 支持的 AspectJ 切点函数

    1 @annotation() 它表示标注了某个注解的所有方法. 假设有一个接口 Cook,它有两个实现类 CookA.CookB: Cook: public interface Cook {/*** ...

  6. Spring-AOP @AspectJ切点函数之target()和this()

    文章目录 概述 实例 target() this() 概述 target()切点函数通过判断目标类是否按类型匹配指定类来决定连接点是否匹配. 用于匹配当前目标对象类型的执行方法:注意是目标对象的类型匹 ...

  7. Spring-AOP @AspectJ切点函数之within()

    概述 语法 实例 withincomxgjNaiveWaiter withincomxgj withincomxgj withincomxgjMark 概述 通过类匹配模式串声明切点,within() ...

  8. Spring-AOP @AspectJ切点函数之args()和@args()

    文章目录 概述 args() @args() 实例 args() @args() 概述 args函数的入参是类名, 而 @args()的入参必须是注解类的类名. 虽然args()允许在类名后使用&qu ...

  9. Spring-AOP @AspectJ切点函数之@annotation()

    文章目录 @annotation()概述 实例 @annotation()概述 @annotation表示标注了某个注解的所有方法. 下面通过一个实例说明@annotation()的用法. Annot ...

最新文章

  1. 数控铣削图案及编程_数控铣削简单图案编程
  2. Java用SAX解析XML
  3. 力软 java主从表保存_JAVA常用知识总结(十二)——数据库(二)
  4. centOS 6.0无法运行dump指令的解决方法
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的服装商城
  6. Linux 搭建SVN server
  7. 贯穿时域与频域的方法——傅立叶分析
  8. web 开发之js---js 实现文本高亮
  9. Android代码中实现关机
  10. ISO14001认证申请条件
  11. 操作系统与计算机组织基本知识(一)
  12. UnityShader基础案例(三)——外发光(泛光)和内发光
  13. 认真阅读完这篇文章熟练掌握关于IDEA断点调试操作(图文详解)
  14. 我最近在看什么——《蛤蟆先生去看心理医生》
  15. SolidWorks+thonny esp32 电磁控制,程序算法搞起来了,我的结构-仿真-电磁-控制-算法的学习之路
  16. 【DC综合】逻辑综合的实施流程
  17. 设计一可控同步四进制可逆计数器, 其由输入X1, X2控制, 用D触发器和74151及必要的门电路实现
  18. python,你也和小猪佩奇一样社会了!
  19. 内容非常全面,细节爆炸
  20. Java页面跳转失效_求助各位java大神,为什么表单提交之后跳转页面失灵

热门文章

  1. python histogram equalization
  2. Christine Daaé
  3. jq获取id的名称_jquery中获取id值方法小结
  4. nRF2401A vs nRF24L01+ 无线数传模块之间的区别
  5. 解决ARDUINO NRF2401+ LAN PA无法使用问题
  6. windows10浏览器Edge快捷键使用思维导图
  7. Linux环境下使用 USB转串口驱动(二)
  8. Kafka消费者策略
  9. Redis可视化工具RDM安装包分享
  10. 专访九合创投王啸:5G助推产业二次腾飞