私はSpringブートを使用してAPIを構築しています。リクエストヘッダからトークンを取得して認証するための認証フィルタを設定しました。ユーザーがトークンを使用して見つからない場合、InvalidWSUserExceptionがスローされます。スプリングブート@ExceptionHandlerが関連する例外をキャッチしていません
多くの@ExceptionHandlerを保持するクラスを作成して、InvalidWSUserExceptionを捕捉し、リクエスト中のトークンが無効であることを要求元のクライアントに通知するJSON文字列で応答できるようにしました。
私はこの作業を別のプロジェクトで行っていましたが、この新しいプロジェクトでは機能しないようです。
Handlerが応答を処理する必要があるため、InvalidWSUserExceptionは空です。
public class InvalidWSUserException extends RuntimeException {
}
私はハンドラクラスをそう定義しました。私は例外を投げていたクラスがビーンを経て春によってインスタンス化されていなかったが、私はこのクラスの上にチェックしました、そして育てているクラス以前のプロジェクトで問題があった
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(value=InvalidWSUserException.class)
public ResponseEntity invalidWSUserException(InvalidWSUserException exception) {
return new WSResponse().send(HttpStatus.UNAUTHORIZED, "Invalid token.");
}
}
例外は@Autowiredアノテーションによってインスタンス化されます。
なぜ@ExceptionHandlerが私が考えるべきことをしていないのか理解するのに苦労しています。
確認すると、ブラウザに表示される出力はエラー500 json応答です。それは@ExceptionHandler
{
"timestamp": 1470833849289,
"status": 500,
"error": "Internal Server Error",
"exception": "digital.sheppard.exceptions.InvalidWSUserException",
"message": "No message available",
"path": "/api/product"
}