javaee spring aop 切入点表达式
  V8pJJzS5Z7xm 2023年11月02日 33 0


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"/>


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
V8pJJzS5Z7xm