🌟
Re:ゼロから始めるSpring Boot実践#1 WebBlog開発#2 Spring Validation
Spring Validationとは
Spring Validation(スプリングバリデーション)とは、
Spring Framework、特にSpring MVCやSpring Bootで、
**入力値チェック(バリデーション)**を簡単に行うための仕組みです。
ざっくりまとめると、
項目 | 説明 |
---|---|
目的 | フォーム入力やAPIリクエストのデータが正しいか検証するため |
主なやり方 | アノテーション(@NotNull, @Size, @Emailなど)を使う |
使う技術 | javax.validation (Jakarta Bean Validation) と Hibernate Validator |
コントローラー側で使うもの | @Valid または @Validated アノテーション |
Spring Validationの使い方
1. 依存パッケージ注入
pom.xmlに追加してMavenプロジェクトを再読み込みする。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
@Pattern
を付ける
2. パラメータ前に正規表現でコンディションを設定すること。
実装例
public Result register(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password) {
@Validated
を付ける
3. Controllerクラスに実装例
@Validated //←これ
public class UserController {
4. 実行結果確認
Postmanのレスポンス:
ステータスコードが500になるんだね。
{
"timestamp": "2025-04-28T07:40:47.945+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/user/register"
}
ログも確認しておこう:
ValidationのExceptionHandler
Validationチェック失敗したら、ブラウザーに500が返されるのが不適切であり、エラーメッセージのフォーマットもデフォルトのままでわかりづらいため、Validationチェックのエラーハンドリングを行う必要がある。また、他でも利用できるように、共通のExceptionHandlerとして作成する。
GlobalExceptionHandlerクラスを作成
@RestControllerAdvice //← RESTコントローラー専用の例外処理を行うためのアノテーション
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public Result handleException(Exception e){ //Result以前作成したResultクラスを流用
e.printStackTrace(); //スタックトレースを出力する
return Result.error(StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "処理失敗"); //eのメッセージがnullであれば、"処理失敗"を返す
}
}
GlobalExceptionHandler実行結果を確認
Postman:
トレースログ:
Discussion