Spring execution表达式详解大全

execution表达式的使用execution(访问修饰符(可省略) 返回值类型 包.包.类.方法名(参数) )

<aop:before method="printLog" pointcut="execution(public void com.huge.service.impl.AccountServiceImpl.save())"></aop:before>

符号类型匹配模式
*匹配任何数量字符;比如模式 (*,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,..)))

// 全通配写法:
* *..*.*(..)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值