1、arg(类型, 类型, …)
@After(value = "execution(* ziy.ann.test.B.*(..)) && args(String, int, Object)") public void arg2() { System.out.println("====增强处理2===="); } /* 传入一系列类型,表示只有当目标方法的参数类型与之完全匹配才可以匹配该切入点 */2、arg(param1, param2,param3,…)
@Before(value = "execution(* ziy.ann.test.B.*(..)) && args(name, age, obj)", argNames = "name, age, obj") public void arg(String name, int age, Object obj) { System.out.println("====增强处理===="); System.out.println(name); } /* 传入增强方法的形参名 因为如果AOP代理对象要调用该方法,那就必须传入三个参数,所以 args()、 argNames/arg-names 、Advice方法形参列表,的形参名必须一样,形参列表的类型必须保证能够被赋值 */1、args():是一个切入点指示符,通常用于限定匹配,可以传入类型或者形参名 args(java.lang.String):限定匹配只有一个参数的方法连接点 args(param1, param2):限定匹配目标方法形参列表有两个参数的方法连接点(并不要求参数名和目标方法的相同) ++++++++++++++++++++++++++++++ 2、argNames/arg-names都输入切入点的属性 用于限制args()和Advice形参列表中的参数名和个数达到完全相同,也就是说 其余两个的参数名和个数必须和本属性的参数名、个数、顺序 一模一样 ++++++++++++++++++++++++++++++ 3、Advice方法参数列表 AOP代理对象如果要调用Advice必须传入能够满足的参数
