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

带方面参数的注释

龙飞
2023-03-14

我有一个可用于注释的方面:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DumpToFile {

}

连接点:

@Aspect
@Component
public class DumpToFileAspect {

  @Around("@annotation(DumpToFile)")
  public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {

    ...
    // I likte to read out a parameter from the annotation...
    Object proceed = joinPoint.proceed();

    ...

    return proceed;
  }
}

我可以在具有@DumpToFile的方法上成功使用方面;然而,我想将一个参数传递给注释,并在我的方面中检索它的值
例如@DumpToFile(fileName=“mydump”)。谁能告诉我怎么做吗?


共有3个答案

姜明贤
2023-03-14
匿名用户

您可以使用:

 @Around("@annotation(dumpFile)")
  public Object logExecutionTime(ProceedingJoinPoint joinPoint,DumpToFile dumpFile) 

< code>@annotation内部必须是< code>DumpToFile参数名。

详情看留档

南门魁
2023-03-14

@Around改为:

@Aspect
@Component
public class DumpToFileAspect {

  @Around("@annotation(dumpToFileAspect)")
  public Object logExecutionTime(ProceedingJoinPoint joinPoint, DumpToFile dumpToFileAspect) throws Throwable {

    ...
    // I likte to read out a parameter from the annotation...
    String fileName = dumpToFileAspect.getFileName();
    Object proceed = joinPoint.proceed();

    ...

    return proceed;
  }
}

唐睿
2023-03-14

您应该能够将注释接口传递给拦截器方法。不过我自己还没有尝试过。

Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DumpToFile {

      String fileName() default "default value";

}

在转储到文件检查中 -

@Aspect
@Component
public class DumpToFileAspect {

  @Around("@annotation(dtf)")
  public Object logExecutionTime(ProceedingJoinPoint joinPoint, DumpToFile dtf) throws Throwable {

    ...
    // I likte to read out a parameter from the annotation...

    System.out.println(dtf.fileName); // will print "fileName"

    Object proceed = joinPoint.proceed();

    ...

    return proceed;
  }
}
 类似资料:
  • 我在想一个一般的请求映射问题。在不选择任何特定MVC框架的情况下,将基于注释的请求映射与简单的参数检查器映射进行比较,哪一个更好? 假设我想创建一个web服务,它应该处理例如“添加”和“删除”操作。 使用注释,它看起来像这样: 使用参数,它将如下所示: 在第二个示例中,假设Operation对象是从JSON对象构建的。我们的想法是,我们只有一个通用的操作,它有一个类型参数,我们总是调用相同的请求(

  • 我创建了自定义注释。我将用它来注释方法参数。 我在这里找到了一些示例代码,展示了如何创建针对自定义注释的切入点。 所以现在,我创建了一个带切入点的方面。但是我不知道如何获得用注释的参数值。

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

  • 我不在乎方法在哪个类(或包)中 注释参数的位置会有所不同。 我知道带注释的值只适用于特定类型 我的切入点实现需要如下内容: 对于值到底需要什么,以及如何将注释与其类型联系起来,我有点困惑。在这一点上,可能不值得列出我尝试过的事情! 更新:根据我在http://stackoverflow.com/questions/3565718/pointcut-matching-methods-with-ann

  • 假设我有这样一种方法: 是否有一个切入点表达式可以选择所有参数带有@CustomAnnotation注释的方法?如果是这样的话,有没有一种方法可以让我访问“value”参数?

  • 所以目前,这是我所做的(不起作用): 这是与建议匹配的代码: 以及由junit测试生成的跟踪: