*:匹配任何数量字符;
..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。
+:匹配指定类型的子类型;仅能作为后缀放在类型模式后边。执行(<修饰符模式>?<返回类型模式> <方法名模式>(<参数模式>)<异常模式>?)除了返回类型模式,方法名模式和参数模式外,其它项都是可选的。

示例:

执行(* com.sample.service.impl .. *.*(..))

解释如下:

符号 含义
执行() 表达式的主体;
第一个 * 符号 表示返回值的类型任意;
com.sample.service.impl AOP所切的服务的包名,即,我们的业务部分
包名后面的 .. 表示当前包及子包
第二个 * 表示类名,* 即所有类。此处可以自定义,下文有举例
.*(..) 表示任何方法名,括号表示参数,两个点表示任何参数类型

通过方法名定义切点
execution(public * *(..))
匹配所有目标类的public方法,第一个代表方法返回值类型,第二个代表方法名,而".."代表任意入参的方法;

execution(* To(..))
匹配目标类所有以To为后缀的方法。第一个“
”代表任意方法返回类型,而“*To”代表任意以To结尾的方法名。

通过类定义切点
execution(* com.taotao.Waiter.*(..))
匹配Waiter接口的所有方法,第一个“”代表任意返回类型,“com.taotao.Waiter.”代表Waiter接口中的所有方法。

execution(* com.taotao.Waiter+.*(..))
匹配Waiter接口及其所有实现类的方法

通过包名定义切点
注意:在包名模式串中,"."表示包下的所有类,而“..**”表示包、子孙包下的所有类。

execution(* com.taotao.*(..))
匹配com.taotao包下所有类的所有方法

execution(* com.taotao..*(..))
匹配com.taotao包及其子孙包下所有类的所有方法,如com.taotao.user.dao,com.taotao.user.service等包下的所有类的所有方法。

execution(* com...Dao.find*(..))
匹配以com开头的任何包名下后缀为Dao的类,并且方法名以find为前缀,如com.taotao.UserDao#findByUserId()、com.taotao.dao.ForumDao#findById()的方法都是匹配切点。

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

  • joke(String, *)
    匹配目标类中joke()方法,该方法第一个入参为String类型,第二个入参可以是任意类型

execution(* joke(String, int))
匹配类中的joke()方法,且第一个入参为String类型,第二个入参 为int类型

execution(* joke(String, ..))
匹配目标类中joke()方法,该方法第一个入参为String,后面可以有任意个且类型不限的参数

常见的切点表达式
匹配方法签名
// 匹配指定包中的所有方法
execution(* com.xys.service.*(..))

// 匹配当前包中的所有public方法
execution(public * UserService.*(..))

// 匹配指定包中的所有public方法,并且返回值是int类型的方法
execution(public int com.xys.service.*(..))

// 匹配指定包中的所有public方法,并且第一个参数是String,返回值是int类型的方法
execution(public int com.xys.service.*(String name, ..))

匹配类型签名
// 匹配指定包中的所有方法,但不包括子包
within(com.xys.service.*)

// 匹配指定包中的 所有方法,包括子包
within(com.xys.service..*)

// 匹配当前包中的指定类中的方法
within(UserService)

// 匹配一个接口的所有实现类中的实现的方法
within(UserDao+)
匹配Bean名字
// 匹配以指定名字结尾的bean中的所有方法
bean(Service)
切点表达式组合
// 匹配以Service或ServiceImpl结尾的bean
bean(
Service || *ServiceImpl)

// 匹配名字以Service结尾,并且在包com.xys.service中的Bean
bean(Service) && within(com.xys.service.)

spring 中execution 表达式语法相关推荐

  1. Spring AOP -- execution表达式

    *:匹配任何数量字符: ..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包:而在方法参数模式中匹配任何数量参数. +:匹配指定类型的子类型:仅能作为后缀放在类型模式后边. 表达式示例 exe ...

  2. aop中execution 表达式

                                                         execution 表达式 学习Spring中的aop组装切面时遇到的execution表达式 ...

  3. Spring AspectJ Execution 表达式

    1. 定义切点表达式 execution(* com.xinsui.service.impl..*.*(..)) execution(* *..impl..*.*(..)) 切点表达式分为五个部分 1 ...

  4. Spring中execution语法

    语法格式 execution(修饰符 返回类型 切入点类 切入点方法(参数) 异常抛出) 修饰符: 可选,支持通配符,(public/private/protected) 返回类型: 必填,支持通配符 ...

  5. spring aop execution表达式

    2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/2525078/blog/735620

  6. Spring AOP切入点@Pointcut -- execution表达式

    Spring AOP 切入点@Pointcut – execution表达式 表达式示例 execution(* com.sample.service.impl..*.*(..)) 详述: execu ...

  7. spring中AOP(面向切面编程)

    spring中AOP(面向切面编程) 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是spring框架中的一个重要内容 ...

  8. execution 表达式用法汇总

    1.切所有controller下的请求 项目结构 任意公共方法的执行: 1 execution(public * (-)) ##public可以省略, 第一个 代表方法的任意返回值 第二个参数代表任意 ...

  9. java aop execution_Spring AOP -- execution表达式

    *:匹配任何数量字符: ..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包:而在方法参数模式中匹配任何数量参数. +:匹配指定类型的子类型:仅能作为后缀放在类型模式后边. 234017_UI ...

  10. Spring Aspect @PointCut(execution表达式)

    execution(* com.sample.service.impl..*.*(..)) 解释如下: 符号 含义 execution() 表达式的主体: 第一个"*"符号 表示返 ...

最新文章

  1. 交换三个整数的值,并输出
  2. SAP PM 入门系列4 - 如何手工触发一个新的PM检验批?
  3. 转载:EBS上用过的一些接口表整理信息
  4. Mysql5.7版本ERROR 1055问题
  5. win7磁盘清理_window7越来越卡?系统残余文件太多,磁盘清理可以搞定!!
  6. 操作系统(三)操作系统的发展和分类
  7. RocketMQ的存储之消息的存储分析
  8. 【vim】几种模式的切换
  9. 前端学习(1355)模板语法循环
  10. springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...
  11. RTOS ---嵌入式操作系统之时钟节拍下的任务切换
  12. CEF加载PPAPI插件
  13. 微信语音麦克风静音_微信语音关闭麦克风对方知道吗
  14. #基本概念# 随机试验 / 样本空间 / 随机变量
  15. Unresolved compilation problem,问题
  16. HDRP UI上渲染模型的解决方式及常见问题
  17. 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()
  18. Hbook笔记 - 免费、简约、大方的Markdown笔记
  19. RadiAnt DICOM Viewer 2021.1中文版
  20. linux下磁盘坏道修复

热门文章

  1. filenet java配置_技术的力量:IPFS新贵Filenet缘何采用Podt
  2. 未雨绸缪——理解软件配置管理(第2版)
  3. 误差的基本性质与处理matlab实验,误差理论与数据处理实验报告
  4. tomcat10.0安装及配置教程(win10)
  5. win10计算机变成了英文,Win10系统中自带的Office(Word,Excel)突然变成英文怎么变回中文...
  6. 如何学习SAP系统并从事相关职业
  7. PCB设计软件有哪些
  8. 「硬见小百科」一文详解红外遥控模块工作原理
  9. python写ppt_python可以写PPT吗
  10. docker配置aria2