カテゴリ: Spring 更新日: 2026/01/15

JavaのSpringで使う@NotEmptyアノテーションを完全解説!初心者でも理解できる入力チェックの基本

Springの@NotEmptyアノテーション
Springの@NotEmptyアノテーション

先生と生徒の会話形式で理解しよう

生徒

「Springのバリデーションで@NotEmptyというアノテーションを見たんですが、これはどういう意味なんですか?」

先生

「@NotEmptyアノテーションは、値がnullでなく、さらに空であってはいけないことを保証するものです。文字列やリスト、配列に使われることが多いんですよ。」

生徒

「なるほど、nullだけじゃなくて空文字や空リストもダメなんですね。実際にはどんな場面で使うんでしょうか?」

先生

「例えばユーザー登録フォームでメールアドレスやパスワードを必須にしたいときです。入力が空だと困るので@NotEmptyでチェックします。」

1. @NotEmptyアノテーションとは何か

1. @NotEmptyアノテーションとは何か
1. @NotEmptyアノテーションとは何か

@NotEmptyアノテーションはJavaのBean Validation仕様に含まれる制約アノテーションのひとつです。Spring BootやSpring MVCのアプリケーションでフォーム入力やREST APIリクエストを検証するときに使われます。

このアノテーションは値がnullでないことに加えて、空文字列や要素数ゼロのコレクションも禁止します。そのため、必須入力項目を確実にチェックするために役立ちます。

2. 基本的な使い方

2. 基本的な使い方
2. 基本的な使い方

@NotEmptyの使い方はとてもシンプルです。対象のフィールドにアノテーションを付けるだけで、入力検証が自動で行われます。


import jakarta.validation.constraints.NotEmpty;

public class UserRequest {

    @NotEmpty
    private String email;

    @NotEmpty
    private String password;

    // getterとsetter
}

この例ではemailとpasswordがnullや空文字だった場合にバリデーションエラーとなります。

3. 実行例とエラーメッセージ

3. 実行例とエラーメッセージ
3. 実行例とエラーメッセージ

Spring Bootのコントローラで@Validを指定すると@NotEmptyのチェックが動作します。


@PostMapping("/register")
public ResponseEntity<String> register(@Valid @RequestBody UserRequest request) {
    return ResponseEntity.ok("登録成功");
}

{
  "email": "",
  "password": ""
}

{
  "errors": [
    {
      "field": "email",
      "message": "must not be empty"
    },
    {
      "field": "password",
      "message": "must not be empty"
    }
  ]
}

空文字や要素ゼロが送信されると自動的に「must not be empty」というエラーが返されます。

4. @NotNullや@NotBlankとの違い

4. @NotNullや@NotBlankとの違い
4. @NotNullや@NotBlankとの違い

@NotEmptyは似たアノテーションとよく比較されます。それぞれの違いを理解して使い分けることが大切です。

  • @NotNull … 値がnullでなければOK。空文字や空リストは許可される。
  • @NotEmpty … nullも空も禁止。必ず値が存在し要素がある必要がある。
  • @NotBlank … 文字列専用で、nullや空白文字のみは禁止。スペースだけの入力も不可。

例えばメールアドレスなら@NotEmpty、パスワードなら@NotBlankを使う方が適切です。

5. 実務での活用例

5. 実務での活用例
5. 実務での活用例

@NotEmptyアノテーションは次のような場面でよく使われます。

  • ユーザー登録でメールアドレスやパスワードを必須にする
  • 検索フォームでキーワード入力を必須にする
  • 商品の注文でリストに必ず1件以上のアイテムが含まれるようにする

このようにシステムの利用に必須な情報を確実に入力させるためにとても便利です。

6. エラーメッセージのカスタマイズ

6. エラーメッセージのカスタマイズ
6. エラーメッセージのカスタマイズ

@NotEmptyのデフォルトメッセージは「must not be empty」ですが、日本語に変更することも可能です。Spring BootではValidationMessages.propertiesを用意して以下のように定義します。


email.notempty=メールアドレスは必ず入力してください
password.notempty=パスワードは必ず入力してください

@NotEmpty(message = "{email.notempty}")
private String email;

@NotEmpty(message = "{password.notempty}")
private String password;

これでユーザーに分かりやすいメッセージを表示でき、システムの利便性が向上します。

7. コレクションや配列に使う場合

7. コレクションや配列に使う場合
7. コレクションや配列に使う場合

@NotEmptyは文字列だけでなく、リストや配列にも使えます。例えば商品の注文リクエストに商品リストを必須にする場合です。


public class OrderRequest {

    @NotEmpty
    private List<String> items;

    // getterとsetter
}

この場合、itemsがnullや空リストで送られた場合はエラーとなります。

8. バリデーショングループと併用する方法

8. バリデーショングループと併用する方法
8. バリデーショングループと併用する方法

新規登録と更新処理でルールを変えたい場合は、バリデーショングループを使うのが便利です。


public class ValidationGroups {
    public interface Create {}
    public interface Update {}
}

public class UserRequest {

    @NotEmpty(groups = ValidationGroups.Create.class)
    private String email;

    @NotEmpty(groups = {ValidationGroups.Create.class, ValidationGroups.Update.class})
    private String password;
}

こうして状況に応じた柔軟な入力チェックが可能になります。

9. REST API設計での@NotEmptyの役割

9. REST API設計での@NotEmptyの役割
9. REST API設計での@NotEmptyの役割

REST APIの設計では、クライアントから送られてくるデータに必須項目が空でないことを保証することが重要です。@NotEmptyを使えば、余計なif文を書かなくても自動で検証されます。

さらにSwaggerやOpenAPIを導入している場合も、@NotEmptyは必須項目として反映され、APIドキュメントの品質を高めることができます。

まとめ

まとめ
まとめ

ここまで@NotEmptyアノテーションの基本から実践的な使い方まで丁寧に確認してきましたが、実際の現場ではとても役立つ入力チェックとして多くの開発者に活用されています。特にフォーム入力やRESTAPIの必須項目を確実に検証する場面では欠かせない存在であり、初心者が最初に身につけておくべき重要なバリデーションの一つだといえます。空文字や空配列を確実に防ぐことで期待したデータを安全に取り扱えるようになり、システムの安定性や信頼性も向上します。さらに@NotNullや@NotBlankとの違いをしっかり理解しておくことで、フィールドに応じてより適切なバリデーションを選択できるようになり、アプリケーション全体の品質を高めることにつながります。 また、国際化対応のエラーメッセージ設定やエラーメッセージプロパティの活用により、ユーザーにとって理解しやすいメッセージを返せる点も重要です。メッセージ一つ変わるだけでも入力者の心理的負担は大きく変わるため、親切で伝わりやすいメッセージを適切に設定することはユーザー体験向上に直結します。さらに、バリデーショングループを使用すれば新規作成と更新でチェック内容を変える柔軟性も得られ、より大規模なシステムにも対応できる高い拡張性を備えた構成を簡単に実現できます。 RESTAPIとの組み合わせやリスト入力の検証など、さまざまなシーンで@NotEmptyが活躍することを理解しておくことで、より正確で使いやすいアプリケーション開発ができるようになります。フォーム入力の必須チェック、APIのデータ保証、コレクションの空チェックなど、幅広い用途で活用できるため、迷ったときはまず@NotEmptyを候補に入れておくとよいでしょう。 ここでは復習も兼ねて@NotEmptyの基本的な使い方をもう一度短いサンプルとして掲載しておきます。実際のコードとしてのイメージを思い出しながら確認してみてください。

基本サンプルコード


import jakarta.validation.constraints.NotEmpty;

public class SampleRequest {

    @NotEmpty(message = "この項目は入力必須です")
    private String name;

    @NotEmpty
    private List<String> keywords;

    // getter setter
}
    

このように@NotEmptyを指定しておけば空文字や空リストの送信が確実に防がれ、入力値の正しさを効率よく保つことができます。特に初心者のうちは細かな違いに迷いがちなので、まずは@NotEmptyの「空であってはいけない」という特徴を自然に思い出せるよう、何度かサンプルを試しながら体で覚えていくとよいでしょう。 こうした基礎知識を身につけておけば、今後より高度なバリデーションや複雑なデータ構造を扱う際にも理解が深まり、開発効率と品質が大きく向上します。Springの入力チェックは一見難しく見えますが、仕組み自体はとても分かりやすく、慣れるほど開発の強い味方になってくれます。

先生と生徒の振り返り会話

生徒

「今日のまとめを読んで@NotEmptyの使いどころがかなりはっきりしてきました。特に空リストが許されない場面で便利だと感じました。」

先生

「その理解はとても良いですね。実務ではフォーム入力やAPIのデータ受け取りで想像以上に役立つので、積極的に使ってみるとよいですよ。」

生徒

「@NotNullや@NotBlankとの差も意識して使い分けられるようになりたいです。場面に応じて適切なアノテーションを選ぶことが大事なんですね。」

先生

「そうですね。特に@NotBlankは文字列限定で空白を禁止できるので、パスワードやIDなどでよく使います。状況を考えながら選択すると品質が上がりますよ。」

生徒

「エラーメッセージを日本語化できるのも便利ですね。ユーザーに優しいシステムを作りたいので、今後はメッセージファイルも活用します!」

先生

「とても良い心がけです。小さな工夫ですがユーザー体験に直結しますし、開発者として大切な感覚です。しっかり習得して次のステップに進みましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Springの@NotEmptyアノテーションは何をチェックするための機能ですか?Java初心者向けに分かりやすく教えてください。

Springで使う@NotEmptyアノテーションは、入力された値がnullでなく、さらに空文字や空リストでないことをチェックするための機能です。必須入力チェックとして使われ、フォーム入力やREST APIのリクエスト検証に役立ちます。

Springの学習を効率化したい方へ

この記事の内容をもっと深く知るには、以下の入門書が最適です。

Spring Framework超入門をAmazonで見る
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Like」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説