我有一个可用于注释的方面:
@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”)
。谁能告诉我怎么做吗?
匿名用户
您可以使用:
@Around("@annotation(dumpFile)")
public Object logExecutionTime(ProceedingJoinPoint joinPoint,DumpToFile dumpFile)
< code>@annotation内部必须是< code>DumpToFile参数名。
详情看留档
将@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;
}
}
您应该能够将注释接口传递给拦截器方法。不过我自己还没有尝试过。
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测试生成的跟踪: