2012-12-02 78 views
1

我正在使用Spring MVC,並使用方面來建議我的控制器。我遇到了一個問題:控制器返回一個用@ResponseBody類型註解的值。你如何能夠找到適用於返回類型的註釋?獲取Java返回類型的註釋

@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"; 
} 

不幸的是,這些方法似乎有預期的效果。我可以檢索正在返回的對象類型的註釋,但不能在返回時添加註釋。

+0

它是方法註釋而不是返回對象的註釋。 –

+0

@ amir-pashazadeh - 可以採取任何方式。 – Apropos

回答

3

@ResponseBody註釋註釋方法,所以我想你會想要的方法註釋。

我不是一個春天的專家,但我看到的例子看起來像:

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

我已經使用建議的簡單方法更新了我的原始帖子。當我檢查方法的註釋時,我可以找到@ RequestMapping,但@ ResponseBody無處可尋。 – Apropos

+0

@Apropos - 更新回答 – jtahlborn

+0

這給了我一個體面的解決方法。我不知道註釋可以應用於整個方法,而不僅僅是返回類型(至少就Spring而言,兩者看起來工作完全一樣)。通過這種方式進行註釋,我至少可以找到映射。所以,謝謝你,因爲它給了我一種方法來實現我想要的。不過,我仍然有興趣知道在我的原始文章中註釋時是否有方法檢索它。 – Apropos