当前位置: 首页 > 知识库问答 >
问题:

“@annotation”切入点与ElementType不匹配。参数注释

晏沈义
2023-03-14

我想使用ElementType运行一个方面。参数注释,但它不起作用。从不调用about-tokenize方法。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Tokenize {}
@Aspect
@Component
public class TokenizeAspect {
    @Around("@annotation(Tokenize)")
    public Object tokenize(ProceedingJoinPoint joinPoint) throws Throwable {
        Object parameter = joinPoint.getArgs()[0];
        return joinPoint.proceed();
     }
}
public void addClientBankAccount(@Tokenize ClientBankAccountRequestCollection) {}

共有1个答案

屠瑞
2023-03-14

Spring手册解释:

@批注:将匹配限制为连接点的主题(在Spring AOP中运行的方法)具有给定注释的连接点。

您的目标不是带注释的方法,而是带注释的参数。这必须以不同的方式进行(注意括号):

execution(* *(.., @org.acme.Tokenize (*), ..))

这将匹配具有由标记化注释的任何参数的任何方法。此外,如果您还需要从方法参数中获取实际注释并计算注释参数,请在此处查看我的相关答案:

  • https://stackoverflow.com/a/16624766/1082681
 类似资料:
  • 假设我有一个注释,如下所示: 然后在Aspect中,我怎么可能想写两个切入点,一个用于所有用@DB操作(isRead操作=true)注释的方法,一个用于@DB操作(isRead操作=false)?

  • 问题内容: 如果满足以下条件,则需要创建一个与方法匹配的切入点的方面: 它用MyAnnotationForMethod注释 它的参数之一(可以有多个)用@MyAnnotationForParam注释(但也可以具有其他注释)。 方面类看起来像这样 注释方法 随着日食->警告:在poincut: 使用http://download.eclipse.org/tools/ajdt/35/update中的最

  • 我试图围绕使用自定义注释注释的方法定义一个切入点。注释有一个参数,我想在切入点定义中包含一个检查。 这是注释: 如何应用注释的示例: 现在我想有两个切入点定义,根据注释的内容选择这两种方法。 在注释本身上创建切入点相对容易: 这将匹配@MyAnno的每次出现。但是我如何定义两个切入点,一个将与包含的匹配,另一个将与包含的匹配

  • 我有一个切入点,我试图用LTW。我有两个方法,我试图建议,每一个与不同的参数列表。但是,它们都有一个我想要的共同参数。 以下是我想建议的方法签名: 我本来希望参数与execution()方法相关联,但有时会出现“混淆”,给我的是IP而不是用户名。 是我不正确地使用了AspectJ,还是这是LTW中的一个bug?我运行的是AspectJ 1.6.13

  • 我有一个使用< code>Process注释定义的流程。此批注具有名为< code>name的属性。流程中包含任务。这些任务是用另一个名为< code>Task的注释定义的。此批注具有属性< code>processName。我有一个将< code>name作为泛型的泛型流程。此流程的任务是任务1、任务2和任务3,这三个任务都将< code>processName作为通用任务。我可以使用aspec