栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring execution表达式举例详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring execution表达式举例详解

深入浅出-Spring execution表达式

最近看到关于execution表达式,百度上大多描述得复杂,所以在这里写下通俗一点的解释。

例子:执行( * com.sample.service.impl ..*.*(..) )

执行( * com.hui.readwrite.mapper..*.select*(..) )

符号含义
执行()表达式的主体;
第一个*符号表示返回值的类型任意;
com.sample.service.implAOP所切的服务的包名,即,我们的业务部分
com.hui.readwrite.mapperAOP所切的服务的包名,通常是mapper层增删改查方法
包名后面的 ..表示当前包及子包
第二个*符号表示类名,*即所有类。此处可以自定义,下文有举例
.*(..)表示任何方法名,括号表示参数,两个点表示任何参数类型
.select*(..)表示带select前缀匹配的方法名,括号表示参数,两个点表示任何参数类型

以下为各符号解释

符号类型匹配模式
*匹配任何数量字符;比如模式 (*,String) 匹配了一个接受两个参数的方法,第一个可以是任意类型,第二个则必须是String类型
..匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数,可以使零到多个。
+匹配指定类型的子类型;仅能作为后缀放在类型模式后边。
符号参数匹配模式:
()匹配了一个不接受任何参数的方法,
(..)匹配了一个接受任意数量参数的方法(零或者更多)。
(*)匹配了一个接受一个任何类型的参数的方法。
(*,String)匹配了一个接受两个参数的方法,第一个可以是任意类型, 第二个则必须是String类型。

示例:

类型匹配模式
// 省略访问修饰符
void com.huge.service.impl.AccountServiceImpl.save()

// 返回值使用通配符,表示可以返回任意值
* com.huge.service.impl.AccountServiceImpl.save()

// 包名可以使用通配符,表示任意包。但是有几级包,就需要写几个*.
* *.*.*.*.AccountServiceImpl.save()

// 包名可以使用..表示当前包及其子包
* *..AccountServiceImpl.save()

//定义在service 包里,及其子类的任意类的任意方法
* com.huge.service.*.*()

// 类名和方法名都可以使用*来实现通配
* *..*.*()

// 所有包下的service,及其子包
* *.service..*()

// IAccountService 若为接口,则为接口中的任意方法及其所有实现类中的任意,方法;
//若为类,则为该类及其子类中的任意方法
* com.huge.service.IAccountService+.*()

// 以s开头的任意方法
* com.huge.service.*.s*()

参数匹配模式
// 基本类型直接写名称 int
* com.huge.service.*.*(int)

// 方法不带参数的
* com.huge.service.*.*()

// 可以使用..表示有无参数均可,有参数可以是任意类型
* com.huge.service.*.*(..)

// 两个参数,第一个是String,第二个任意,三个参数不行
execution(* joke(String,*)))

// 两个参数,第一个String,第二个个数和类型不限
execution(* joke(String,..)))

// 全通配写法:
* *..*.*(..)

借阅:https://blog.csdn.net/weixin_44122191/article/details/117264684

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号