具有指定注释的参数的方法的 AspectJ 切入点
AspectJ Poincut for method with arguments with specified annotaion
例如我有以下方法:
public void method1(@MyAnnotation Object a, Object b..) {
...
}
public void method1(Object a, Object b..., @MyAnnotation Object n, ...) {
...
}
什么是 AspectJ 切入点,它仅针对具有使用 @MyAnnotation 注释的参数的方法?
此注释可应用于方法的任何参数。
以下切入点应与您问题中方法的执行相匹配。我还提供了第二个切入点,它只是对第一个切入点稍作修改,但如果您需要匹配使用注释注释的特定类型,您可能会发现它很有用。
public aspect AnnotatedMethodParameterMatchingAspect {
/**
* Matches the execution of any method having a parameter annotated with the
* {@link MyAnnotation} annotation.
*/
pointcut executionOfMethodWithAnnotatedParameter():
execution(* *(.., @MyAnnotation (*), ..));
/**
* Matches the execution of any method having a parameter annotated with the
* {@link MyAnnotation} annotation where the parameter type is a {@link MyType}
* (or a subtype).
*/
pointcut executionOfMethodWithAnnotatedTypeRestrictedParameter():
execution(* *(.., @MyAnnotation (MyType+), ..));
}
例如我有以下方法:
public void method1(@MyAnnotation Object a, Object b..) {
...
}
public void method1(Object a, Object b..., @MyAnnotation Object n, ...) {
...
}
什么是 AspectJ 切入点,它仅针对具有使用 @MyAnnotation 注释的参数的方法?
此注释可应用于方法的任何参数。
以下切入点应与您问题中方法的执行相匹配。我还提供了第二个切入点,它只是对第一个切入点稍作修改,但如果您需要匹配使用注释注释的特定类型,您可能会发现它很有用。
public aspect AnnotatedMethodParameterMatchingAspect {
/**
* Matches the execution of any method having a parameter annotated with the
* {@link MyAnnotation} annotation.
*/
pointcut executionOfMethodWithAnnotatedParameter():
execution(* *(.., @MyAnnotation (*), ..));
/**
* Matches the execution of any method having a parameter annotated with the
* {@link MyAnnotation} annotation where the parameter type is a {@link MyType}
* (or a subtype).
*/
pointcut executionOfMethodWithAnnotatedTypeRestrictedParameter():
execution(* *(.., @MyAnnotation (MyType+), ..));
}