カテゴリ: Spring 更新日: 2026/01/15
PR
独学でJavaを学んでいる方向け
「実務レベルに到達できるか不安」「1人だと詰まることが多い」場合は、 実践重視で学べる環境を一度確認しておくのも一つの手です。
EBAエデュケーション |学習内容・サポートを見る

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や空文字だった場合にバリデーションエラーとなります。

PR

将来を見据えて、+αのスキルを身につけたい方へ

JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。

AIを学ぶならアイデミープレミアム

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 FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazonアソシエイト・プログラムを利用しています

カテゴリの一覧へ
新着記事
PR

JavaやLinuxの検証環境に
低コストで使えるVPS

Thymeleafのth:blockの使い方を完全ガイド!初心者でもわかるテンプレートブロック管理
Thymeleafのth:selected属性の使い方を完全解説!初心者でもわかるセレクトボックス選択状態の指定方法
Spring MVCのルーティング設計をマスター!初心者向け@GetMappingと@PostMappingの基本と命名ルール
JSPのコメントタグとHTMLコメントの違いを徹底解説!初心者向けわかりやすい使い分け講座
PR 未経験からITエンジニアを目指す方へ

Javaを学んでいるけど、「このまま未経験で就職できるか不安」という20代向け。 学歴不問・無料サポートの就職支援という選択肢があります。

Tamesy |無料で面談予約
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得
No.3
Java&Spring記事人気No3
JavaのIntegerクラスparseIntメソッド完全ガイド!初心者でもわかる文字列から数値変換
No.4
Java&Spring記事人気No4
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.5
Java&Spring記事人気No5
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.6
Java&Spring記事人気No6
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
PR

ローカルPCに依存しない開発環境という選択肢

Java・Linuxの検証や学習環境を、クラウド上ですぐに用意できます。

Java入門

Javaの基礎を体系的に学びたい場合は、文法だけでなく 「なぜそう書くのか」まで丁寧に解説されているため、 初心者でも理解しやすい定番の1冊です。

スッキリわかるJava入門 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Java実践

ジェネリクス、enum、シールクラスなどの型設計から、 関数型プログラミング(ラムダ式・Stream API)、 JVM制御やリフレクション、外部ライブラリの活用までを扱っており、 「Javaを使えるレベル」へ進むための内容が網羅されています。

スッキリわかるJava入門 実践編 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Spring入門

Spring Frameworkの全体像から、 Webアプリ開発で必要となる主要機能までを 体系的に解説している定番の入門書です。

Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発

※ 紙の書籍・電子書籍どちらでも購入できます

PR 実務経験のあるエンジニア向け

Javaなどの実務経験があり、次のキャリアを検討している方向け。 IT・ゲーム業界に特化した転職支援サービスという選択肢もあります。

転職ボックス |IT・ゲーム業界専門