1

私はSpring MVCを使用しており、アスペクトを使用してコントローラーにアドバイスしています。私は 1 つの問題に直面しています: @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 に答える