2016-11-04 16 views
1

Spring RestTemplateクラスのAOPをSpring AOPまたはAspectjを使用して記述することは可能ですか? EX:Spring RestTemplateクラス用のAOPとSpring AOPまたはAspectjを使用する任意の外部Jarクラスを書くことができるかどうか

@Around("execution(* org.springframework.web.client.RestTemplate.getFor*(..))")   

おかげ

+0

これは間違いなく可能です。 –

+0

[AspectJ開発環境ガイド](http://www.eclipse.org/aspectj/doc/released/devguide/)を参考にしてください。 –

+2

あなたはコンパイル時の織り方と積み込み時の織り方を合わせるかどうかを決める必要があります。可能であれば、コンパイル時の織りに行ってください。コンパイル時の織り方については、http://www.mojohaus.org/aspectj-maven-plugin/を参照してください。積み込み時間については、http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.htmlを参照してください。 –

答えて

1

私は同じ問題を持っていたし、それは、AOPで動作させることができませんでした。

ただし、この場合は回避策があります。 RestTemplateInterceptingHttpAccessorに拡張されているので、RestTemplateオブジェクトからのすべての要求を傍受できます。

すべてのHTTPリクエストをログに記録

設定例:

@Bean 
public RestTemplate restTemplate() { 

    RestTemplate restTemplate = new RestTemplate(); 

    // (...) 
    // setup code for the RestTemplate object 

    restTemplate.getInterceptors().add((request, body, execution) -> { 
     logger.info("HTTP {} request to {}", request.getMethod(), request.getURI()); 
     return execution.execute(request, body); 
    }); 

    return restTemplate; 
} 

これは様相を使用するのと同じではありませんが、あなたはインターセプタとかなり最小限の構成で同様の機能を得ることができます。

関連する問題