在 AspectJ 切入点中定义参数数量
Define number of parameters in AspectJ pointcut
我想定义一个切入点,其中唯一重要的一点是目标方法的参数数量。例如,我有以下切入点定义;
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)
&& execution(* pkg..*.*(pkg.Obj1, pkg.Obj2, pkg.Obj3))")
我不希望对预期的参数类型进行硬编码,但我只想为该切入点获取只有三个参数的方法。如何仅通过上述切入点应该有三个参数的信息来实现这一点,而不指定参数的详细信息?
例如我希望它匹配;
// in package pkg.*
@RequestMapping
public test(ObjX objX, ObjY objY, ObjZ objZ) {
//etc
}
但不符合以下条件;
// also in package pkg.*
@RequestMapping
public test(ObjX obj) {
//etc
}
或
// also in package pkg.*
@RequestMapping
public test(ObjX objX, ObjY objY) {
//etc
}
或
// also in package pkg.*
@RequestMapping
public test(ObjX objX, ObjY objY, ObjZ objZ, ObjQ objQ) {
//etc
}
我找到了,实现方法是给*
作为参数;
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)
&& execution(* xxx.yyy.zzz..*.*(*, *, *))")
与 *
类似的用法用于 return 类型,其他 class 和方法名称。
我想定义一个切入点,其中唯一重要的一点是目标方法的参数数量。例如,我有以下切入点定义;
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)
&& execution(* pkg..*.*(pkg.Obj1, pkg.Obj2, pkg.Obj3))")
我不希望对预期的参数类型进行硬编码,但我只想为该切入点获取只有三个参数的方法。如何仅通过上述切入点应该有三个参数的信息来实现这一点,而不指定参数的详细信息?
例如我希望它匹配;
// in package pkg.*
@RequestMapping
public test(ObjX objX, ObjY objY, ObjZ objZ) {
//etc
}
但不符合以下条件;
// also in package pkg.*
@RequestMapping
public test(ObjX obj) {
//etc
}
或
// also in package pkg.*
@RequestMapping
public test(ObjX objX, ObjY objY) {
//etc
}
或
// also in package pkg.*
@RequestMapping
public test(ObjX objX, ObjY objY, ObjZ objZ, ObjQ objQ) {
//etc
}
我找到了,实现方法是给*
作为参数;
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)
&& execution(* xxx.yyy.zzz..*.*(*, *, *))")
与 *
类似的用法用于 return 类型,其他 class 和方法名称。