はじめに
ウェブアプリケーションを作ってるとリクエストパラメータのバリデーションを行いたくなりますよね。それも、できれば簡単にしたい、という思いは皆一律にあると思います。
本記事では、Spring FrameworkのREST APIでリクエストパラメータのバリデーションを行う方法をまとめます。
筆者の環境
- Spring Framework 5.2.3
- Java 17
前提
- Spring Frameworkで動くプロジェクトがある
やること
- DependenciesでValidationを追加する
- Resourceクラスを作成する
- ControllerクラスでResourceを取り入れる
1. DependenciesでValidationを追加する
- STSからは以下の画面で
Validation
を選択することで追加ができます

build.gradle
のdependensies
に以下が含まれていたらOKです
implementation 'org.springframework.boot:spring-boot-starter-validation'
2. Resourceクラスを作成する
- リクエストパラメータをチェックするResourceクラスを作成します
- 今回は簡単に、入力された名前(
name
)で従業員のデータを新規作成するために、名前パラメータのチェックをするクラスを作成します
@Service
public class CreateEmployeeRequestResource implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "name is null")
@Size(min = 1, max = 128, message = "name length must be between 1 and 128")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@NotNull
は、name
はNULLではないことをチェックするアノテーションです@Size
は、文字列の長さを制限するアノテーションです- 今回はnameは1から128文字であることをチェックすることにします
- 各チェックの
message
は、もしチェックに引っかかった場合に出力するエラーメッセージを書くことができます。 - これでResourceクラスはOKです
3. ControllerクラスでResourceを取り入れる
- Controllerでパラメータを自動でResourceクラスに取り込み、バリデーションを実行するように設定します
@RestController
@RequestMapping("employees")
public class EmployeeController {
@Autowired
CreateEmployeeService createEmployeeService;
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void create(@Validated @RequestBody CreateEmployeeRequestResource newResource) {
createEmployeeService.create(newResource);
}
}
- これで準備OKです 👍