日期:2014-05-17  浏览次数:20843 次

AspectJ的切点函数execution方法介绍


AspectJ通配符:

1、× 一个元素
2、.. 多个元素
3、 +类的类型,必须跟在类后面。

AspectJ切点函数:

execution(修饰符 返回类型 方法名(参数类型)异常类型)

execution(* *(..))???????????????????????????????? 任意一个返回类型,任意一个方法名(多个参数)

execution(public * *(..))????????????????????????? Public修饰符 任意一个返回类型,任意一个方法名(多个参数)

方法签名
例子1:

execution(* *Get*(..))???????????????????????????? userGet(..)??? testGet(..)? demoGetList(..)

类定义:
execution(* com.longzhun.UserManager.*(..))??????? com.longzhun包下的UserManager类或接口中的所有方法都会被拦截????

execution(* com.longzhun.UserManager+.*(..))?????? com.longzhun包下的UserManager类或接口中的所有方法以及子类,实现类的所有方法都会被拦截????

?

包:
execution(* com.longzhun.*(..))???????????????????? com.longzhun包下的所有方法都会被拦截

execution(* com.longzhun..*(..))??????????????????? com.longzhun包下以及子包下的所有方法都会被拦截 如:com.longzhun.manager

execution(* com.longzhun..*.*Service.save*(..))???? com.longzhun包下以及子包下以Service结尾的所有类或接口中的以save开始的所有方法都会被拦截
???????UserService? DemoService? save*? saveUser saveDemo

参数:
execution(* com.longzhun.save*(String))

execution(* com.longzhun.save*(String,*))

execution(* com.longzhun.save*(String,..))

execution(* com.longzhun.save*(Object+))???

execution(* com.longzhun.save*(Object)) *

execution(* com.longzhun.save*(java.util.List))

java.lang.*

?

?