備忘録

spring bootでバリデーションチェックのレスポンスをカスタマイズ

バリデーションチェックで弾く場合、コントローラ層まで処理が進まないため、いくつかやることがあります。

事前にリクエストされたパラメータを保持しておきたい。

スレッドローカルに保存するのが良いです

スレッドローカルを操作するライブラリに、org.slf4j.MDCがあります。

* バリデーション前に処理を行う

@Aspect

を指定したクラスを用意します。

メソッドには、

@Before("within(org.springframework.stereotype.コントローラ)")

とかいれます。

ここでスレッドローカルに値をいれておくわけです。

Httpのリクエストは、RequestContextHolder?のrequestAttributes.requestにあります。

スレッドで値を共有したくはないので、後始末として

@AfterReturning("org.springframework.stereotype.コントローラ")

または

@After("org.springframework.stereotype.コントローラ")

とかいれます。

バリデーションエラー後

@ControllerAdvice?で指定したクラスで、@ExceptionHandler?で指定したメソッドで受けます。注意点としては、戻り値は、ResponseEntity?<Object>とObject型にするのがコツです。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS