切入点表达式的细节

切入点表达式的细节

标准写法

execution(访问修饰符 返回值类型 全限定类名.方法名(参数列表))
例:
execution(public com.test.service.UserServiceImpl.addUser(com.test.entity.User))

访问修饰符可以省略

execution(public void com.test.service.UserServiceImpl.addUser(com.test.entity.User))

等价于

execution(void com.test.service.UserServiceImpl.addUser(com.test.entity.User))

使用通配符表示任意的返回值

execution(* com.test.service.UserServiceImpl.addUser(com.test.entity.User))

包名可以使用通配符

包名使用通配符表示,可以用来表示任意包,但是有几级包名,写几个*.

execution(* *.*.*.UserServiceImpl.addUser(com.test.entity.User))

这个例子表示,任意三级包名下的UserServiceImpl类中,返回任意类型的,参数为User类型的addUser方法。

表示任意包及其子包的通配符

使用*..表示任意包及其子包。

execution(* *..UserServiceImpl.addUser(com.test.entity.User))

这个例子表示,任意包下的UserServiceImpl类中,返回任意类型的,参数为User类型的addUser方法。

之前的例子限定了包的级数,这里的*..表示任意的包及其子包

类名使用通配符

execution(* *..*.addUser(com.test.entity.User))

这个例子表示任意包下的,任意类中参数为User的addUser方法。

方法名可以使用通配符

execution(* *..*.*(com.test.entity.User))

这个例子表示任意包下的,任意类中的参数为User的任意方法。

参数列表

普通类型:直接写类型

execution(* *..*.*(boolean))

引用类型:全限定类名

execution(* *..*.*(com.test.entity.User))

使用通配符表示

execution(* *..*.*(*,*))

表示必须有任意类型的两个参数的方法。

表示任意参数列表

execution(* *..*.*(..))

使用..表示任意的参数列表,可以没有参数,也可以有任意多个参数。

全通配写法:所有的方法都是切入点

execution(* *..*.*(..))

全通配写法很少使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章