获取Java中返回类型的注释

获取Java中返回类型的注释,java,methods,annotations,return,Java,Methods,Annotations,Return,我正在使用SpringMVC,并且正在使用aspects为我的控制器提供建议。我遇到了一个问题:返回带有@ResponseBody类型注释的值的控制器。如何找到应用于返回类型的注释 @Around("myPointcut()") private Object checkAnnotations(ProceedingJoinPoint pjp) throws Throwable { Object result = pjp.proceed(); Method method = ((Me

我正在使用SpringMVC,并且正在使用aspects为我的控制器提供建议。我遇到了一个问题:返回带有@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";
}

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

注释
@ResponseBody
注释对方法进行注释,因此我认为您可能希望获取方法注释

我不是spring专家,但我看到的示例如下:

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

@ResponseBody
注释注释了一个方法,因此我想您可能想要获得方法注释

我不是spring专家,但我看到的示例如下:

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

它是一个类型注释。它从Java8开始提供。这为您提供了一个良好的开端:

它是一个类型注释。它从Java8开始提供。这给了你一个领先的开始:

我已经用建议的简单方法更新了我的原始帖子。当我检查方法上的注释时,我可以找到@RequestMapping,但是@ResponseBody却找不到。这给了我一个不错的解决方法。我不知道注释可以应用于整个方法,而不仅仅是返回类型(至少就Spring而言,两者的工作方式完全相同)。通过这样注释,我至少可以找到映射。所以谢谢你,因为它给了我一个实现我想要的东西的方法。不过,我还是想知道,如果像在我的原始帖子中那样对其进行注释,是否有办法检索它。注释不能应用于返回值。将注释放在问题中的位置,或者放在这个答案中的位置,严格来说是等价的。@Apropos-如果它没有显示为方法的注释之一,我看不到一种获得它的方法。它不会出现在返回类型类上,因为这可能是任何东西。问题一定在别处。请参阅一个按预期工作的示例。我已使用建议的简单方法更新了我的原始帖子。当我检查方法上的注释时,我可以找到@RequestMapping,但是@ResponseBody却找不到。这给了我一个不错的解决方法。我不知道注释可以应用于整个方法,而不仅仅是返回类型(至少就Spring而言,两者的工作方式完全相同)。通过这样注释,我至少可以找到映射。所以谢谢你,因为它给了我一个实现我想要的东西的方法。不过,我还是想知道,如果像在我的原始帖子中那样对其进行注释,是否有办法检索它。注释不能应用于返回值。将注释放在问题中的位置,或者放在这个答案中的位置,严格来说是等价的。@Apropos-如果它没有显示为方法的注释之一,我看不到一种获得它的方法。它不会出现在返回类型类上,因为这可能是任何东西。问题一定在别处。有关按预期工作的示例,请参阅。它是方法注释而不是返回对象的注释。@amir pashazadeh-可以用任何一种方法完成。它是方法注释而不是返回对象的注释。@amir pashazadeh-可以用任何一种方法完成。