学习笔记(05-02)的代码中用到了AspectJ的切入点表达式—execution表达式即:
在xml的配置方式中配置切入点
<aop:pointcut expression=“execution(* com.aop.UserDao.addUser(…))” id=“myPointcut”/>
以上的代码中用到了切点函数execution(),用来匹配切入的位置。其语法如下所示:
execution(<修饰符模式>? <返回类型模式> <方法名模式>(<参数模式>) <异常模式>?)
除了返回类型模式、方法名模式和参数模式外,其它项都是可填可不填的。举个例子解释:
execution (* com.aop…*. *(…))
¤用来匹配com.aop中声明的所有方法。
解释:
- 第一个*代表任意修饰符及任意返回值,
- 然后是包名,后面的..表示当前包和当前包的所有子包
- 第二个*号是类名,*号表示所有的类
- 第三个*代表任意方法,括号中..表示用来匹配任意数量的参数。
- 若目标类与接口与切面在同一个包中,可以省略包名。
¤几个典型例子:
//匹配任意返回值的,在com.aop包中的所有UserDao接口对象下的公有方法
execution(public * com.aop.UserDao.(…))
//匹配包里面的所有类的所有公有方法
execution(public * com.aop..(…))
//匹配所有UserDao接口对象的所有公有方法
execution(public * UserDao.(…))
//匹配所有UserDao接口对象中返回double类型的方法
execution(public double UserDao.(…))
//匹配所有UserDao接口对象中返回double类型的第一个参数为double类型的任意方法, …匹配任意数量任意类型的参数
execution( * double UserDao.(double, …))
//匹配所有UserDao接口对象中参数类型为double, double的共有方法
execution(public UesrDao.(double, double))