黑马程序员技术交流社区

标题: [石家庄校区]切入点表达式 [打印本页]

作者: longxf_sjz    时间: 2019-7-28 19:15
标题: [石家庄校区]切入点表达式

一  切入点表达式
    在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut切入点,切入点表达式被用来指定那些方法需要被增强。
    execution()是最常用的切点函数,其语法如下所示:
    execution([修饰符] 返回值类型 包名.类名.方法名(参数列表))

二 详细用法
    1 全匹配写法
   
[XML] 纯文本查看 复制代码
execution( public void com.itheima.service.impl.UserServiceImpl.saveCustomer(..) )

    2 默认 public 可以省略
   
[XML] 纯文本查看 复制代码
execution( void com.itheima.service.impl.UserServiceImpl.saveCustomer(..) )

    3 匹配任何返回值
   
[XML] 纯文本查看 复制代码
execution( * com.itheima.service.impl.UserServiceImpl.saveCustomer(..) )

   4 参数列表可以使用 * , 表示可以是任何的数据类型,但必须有参数
   
[XML] 纯文本查看 复制代码
execution( * com.itheima.service.impl.UserServiceImpl.saveCustomer( * ) )

   5 参数列表可以使用 .. 表示有无参数均可,有参数可以是任意类型
   
[XML] 纯文本查看 复制代码
execution( * com.itheima.service.impl.UserServiceImpl.saveCustomer( .. ) )

   6 包名可以使用*,表示任意包,但是有几级包,需要写几个
   
[XML] 纯文本查看 复制代码
execution( * *.*.*.*.UserServiceImpl.saveCustomer( .. ) )

   7 使用..来表示当前包,及其子包
   
[XML] 纯文本查看 复制代码
execution( * com..UserServiceImpl.saveCustomer( .. ) )

   8 类名可以使用*号,表示任意类
   
[XML] 纯文本查看 复制代码
execution( * com..*.saveCustomer( .. ) )

   9 类名也可以使用 * 加后缀,表示这个后缀的所有类
   
[XML] 纯文本查看 复制代码
execution( * com..*ServiceImpl.saveCustomer( .. ) )

   10 方法名可以使用*号,表示任意方法
   
[XML] 纯文本查看 复制代码
execution( * com..*.* ( .. ) )

   11 全通配方式
   
[XML] 纯文本查看 复制代码
execution( * *..*.* ( .. ) )

   12 实际开发中常用写法
   
[XML] 纯文本查看 复制代码
* com.itheima.service.impl.*.*(..)






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2