SpringBootの研究ノート(17):カスタムインターセプタ
クイックスタート
インターセプタ同様のフィルタが、インターセプタは、より細かい制御能力を提供つのノードを処理するための要求をインターセプトすることができ、。
- コントローラにリクエストを送信する前に
- 前にクライアントに応答して、
たとえば、ヘッダ内の要求インターセプタは、コントローラに要求を送信し、クライアントに応答を送信する前に応答ヘッダを追加する前に追加され使用することができます。
インターセプタを作成します
インターセプタを作成し、HandlerInterceptorは、インターフェイスを実装する必要があり、彼の傍受を達成する3つの方法があります
-
preHandle():コントローラに要求する前に操作を実行するため。このメソッドは、クライアントに応答にtrueを返す必要があります。
-
postHandle():前応答結果に動作を実行するためにクライアントに送信されます。
-
afterCompletion()操作は、すべての上の要求に応答して実行された後。
インターセプタのカスタムコードは次のよう:
@Component
パブリッククラスProductServiceInterceptorが実装HandlerInterceptor {
@Override
パブリックブールpreHandle(
HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラ)が例外をスロー{
trueを返します。
}
@Override
公共ボイドpostHandle(
HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラ
のModelAndViewのModelAndView)は例外{}スロー
@Override
公共ボイドafterCompletion(HttpServletRequestのリクエスト、HttpServletResponseの応答、
オブジェクトハンドラ、例外例外)が例外をスロー{}
}を
登録インターセプター
インターセプタの後、あなたはWebMvcConfigurerAdapter InterceptorRegistryにインターセプタを登録する必要があり、以下に示すように、
@Component
パブリッククラスProductServiceInterceptorAppConfigはWebMvcConfigurerAdapter {延び
@Autowired
; ProductServiceInterceptor productServiceInterceptorを
@Override
公共ボイドaddInterceptors(InterceptorRegistryレジストリ){
registry.addInterceptor(productServiceInterceptor)。
}
}