首页 > 其他分享 >切入点表达式

切入点表达式

时间:2022-10-04 20:45:58浏览次数:39  
标签:切入点 参数 表达式 execution 讲师 类名

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

  

切入点表达式:

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

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

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

2、表达式不同写法
1.匹配指定方法

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

2.默认 public 可以省略

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

3.匹配任何返回值

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

12.多个表达式

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

13.取非值

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

标签:切入点,参数,表达式,execution,讲师,类名
From: https://www.cnblogs.com/daimenglaoshi/p/16754412.html

相关文章