实验四 切入点表达式语法
1、切入点表达式的作用
2、语法示例
3、语法细节
3、总结

实验四 切入点表达式语法

1、切入点表达式的作用

实验4 切入点表达式语法 - 图1

2、语法示例

  • 切入点是某包某类的无参数的方法:

示例:execution(* com.atguigu.service.impl.Student.test())

  • 切入点是某包某类带有参数的方法

示例: execution(* com.atguigu.service.impl.Student.test(String,int))

  • 切入点是某包某类的某个同名的所有方法

示例:.. 表示任意个数任意类型的参数
execution(* com.atguigu.service.impl.Student.test(..))

  • 切入点是某包下的某类的所有方法

示例:表示任意的类名,方法名,包名
execution(
com.atguigu.service.impl.Student.*(..))

  • 切入点是某包下的所有类的所有方法

示例: 表示任意的类名,方法名,包名
execution(
com.atguigu.service.impl. . (..))

3、语法细节

  • 用*号代替“权限修饰符”和“返回值”部分表示“权限修饰符”和“返回值”不限

  • 在包名的部分,一个“*”号只能代表包的层次结构中的一层,表示这一层是任意的。
    • 例如:*.Hello匹配com.Hello,不匹配com.atguigu.Hello
  • 在包名的部分,使用“*..”表示包名任意、包的层次深度任意

  • 在类名的部分,类名部分整体用*号代替,表示类名任意
  • 在类名的部分,可以使用*号代替类名的一部分

*Service
上面例子表示匹配所有名称以Service结尾的类或接口

  • 在方法名部分,可以使用*号表示方法名任意
  • 在方法名部分,可以使用*号代替方法名的一部分

*Operation
上面例子表示匹配所有方法名以Operation结尾的方法

  • 在方法参数列表部分,使用(..)表示参数列表任意
  • 在方法参数列表部分,使用(int,..)表示参数列表以一个int类型的参数开头
  • 在方法参数列表部分,基本数据类型和对应的包装类型是不一样的
    • 切入点表达式中使用 int 和实际方法中 Integer 是不匹配的
  • 在方法返回值部分,如果想要明确指定一个返回值类型,那么必须同时写明权限修饰符

execution(public int ..Service.(.., int))
上面例子是对的,下面例子是错的:
execution(
int ..Service.(.., int))
但是public
表示权限修饰符明确,返回值任意是可以的。

  • 对于execution()表达式整体可以使用三个逻辑运算符号
    • execution() || execution()表示满足两个execution()中的任何一个即可
    • execution() && execution()表示两个execution()表达式必须都满足
    • !execution()表示不满足表达式的其他方法

3、总结

实验4 切入点表达式语法 - 图2

上一个实验 回目录 下一个实验