1、切入点表达式:对指定的方法进行拦截,并且生成代理表达式。

表达式语法:

execution([修饰符] 返回值类型 包名.类名.方法名(参数))

execution( public void com.test.service.impl.UsersService.add() )

2、表达式不同写法

1.匹配指定方法

1<aop:pointcut expression="execution( public void com.test.service.impl.UsersService.add())" id="pt"/>

2.默认 public 可以省略

2<aop:pointcut expression="execution( void com.test.service.impl.UsersService.add())" id=“pt”/>`

3.匹配任何返回值

3<aop:pointcut expression="execution( * com.test.service.impl.UsersService.add())" id=“pt”/>`

4.参数列表可以使用 * , 表示可以是任何的数据类型,但必须有参数

4<aop:pointcut expression="execution( * com.test.service.impl.UsersService.add(*))" id=“pt”/>`

5.参数列表可以使用 … 表示有无参数均可,有参数可以是任意类型

5<aop:pointcut expression="execution( *com.test.service.impl.UsersService.add(..))" id=“pt”/>`

6.使用…来表示当前包,及其子包

6<aop:pointcut expression="execution( * com..UsersService.add(..))" id=“pt”/>`

7.类名可以使用*号,表示任意类

7<aop:pointcut expression="execution( * com..*.add(..))" id=“pt”/>`

8.类名也可以使用 * 加后缀,表示这个后缀的所有类

8<aop:pointcut expression="execution( * com..*Service.add(..))" id=“pt”/>`

9.方法名可以使用*号,表示任意方法

9<aop:pointcut expression="execution( * com..*.*(..))" id=“pt”/>`

10.全通配方式execution( * .* ( … ) )

10<aop:pointcut expression="execution(public * *(..))" id="pt"/>

11.拦截所有save开头的方法

11<aop:pointcut expression="execution(* save*(..))" id="pt"/>

12.多个表达式

<aop:pointcut   expression="execution(* 包名.类名.方法名()) || execution(* 包名.类名(不同的类).方法名())"` `id="pt"/>`   `<aop:pointcut   expression="execution(* ``包名.类名.方法名()) or execution(* 包名.类名(不同的类).方法名())"` `id="pt"/>

13.取非值

13<aop:pointcut expression="!execution(* 包名.类名.方法名())" id="pt"/> <aop:pointcut expression=" not execution(* 包名.类名.方法名())" id="pt"/>

更多推荐