1

我正在使用 Spring MVC 并正在使用方面来为我的控制器提供建议。我遇到了一个问题:返回带有 @ResponseBody 类型注释的值的控制器。您如何找到应用于返回类型的注释?

@Around("myPointcut()")
private Object checkAnnotations(ProceedingJoinPoint pjp) throws Throwable {
    Object result = pjp.proceed();
    Method method = ((MethodSignature)pjp.getSignature()).getMethod();
    System.out.println("Checking return type annotations.");
    for(Annotation annotation : method.getReturnType().getAnnotations()){
        System.out.println(annotation.toString());
    }
    System.out.println("Checking annotations on returned object.");
    for(Annotation annotation : result.getClass().getAnnotations()){
        System.out.println(annotation.toString());      
    }
    return result;
}

建议的方法:

@RequestMapping("/Test")
public @ResponseBody String doTest(){
    return "Test";
}

不幸的是,这些方法似乎都没有达到预期的效果。我可以检索正在返回的对象类型的注释,但不能检索在返回时添加的注释。

4

2 回答 2

3

@ResponseBody注释注释了一个方法所以我想你会想要获取方法注释。

我不是弹簧专家,但我看到的例子看起来像:

@RequestMapping("/Test")
@ResponseBody
public String doTest(){
    return "Test";
}
于 2012-12-02T17:05:19.487 回答
1

它是一种类型注释。它从 Java 8 开始可用。这为您提供了一个良好的开端:http: //java.dzone.com/articles/java-8-type-annotations

于 2014-12-04T00:10:07.597 回答