ホームページ  >  記事  >  Java  >  Java API開発におけるパラメータ検証にBean Validationを使用する

Java API開発におけるパラメータ検証にBean Validationを使用する

WBOY
WBOYオリジナル
2023-06-18 23:58:011515ブラウズ

Java API の開発において、パラメーターの検証は非常に重要なリンクです。 Bean Validation フレームワークを使用すると、パラメーターを簡単に検証して、API パラメーター転送の正当性を確認できます。この記事ではBean Validationの使い方を紹介します。

1. Bean Validation とは何ですか?

Bean Validation は Java EE 6 仕様の一部です。これは、メソッド、コンストラクター、フィールド、プロパティなどの注釈に検証ルールを追加するために使用できる、注釈ベースのパラメーター検証フレームワークです。これらの注釈は、開発者がコード作成段階での入力エラーをより適切に防止し、実行時にユーザー入力エラーを検出してプロンプトを表示するのに役立ちます。

Bean Validation フレームワークは主に次の問題を解決します。

  1. ビジネス ロジックと制限を検証します (例: 空かどうか、メールボックスかどうか、数値かどうかなど) 、など)。
  2. 形式と構文を確認してください (例: 日付、電話番号、郵便番号など)。
  3. 2 つ以上のフィールドの相互依存性を確認します (例: 開始日は終了日より前である必要があります)。

2. Bean Validation はどのように機能しますか?

Bean Validation フレームワークは、検証が必要なパラメーターをマークするためにアノテーションを使用します。これらのアノテーションには、@NotNull、@Min、@Max、@Size、@Pattern などが含まれます。メソッドにパラメータが渡されると、Bean Validation フレームワークは対応する検証ルールを自動的に実行し、検証に失敗するとエラー メッセージを送信します。開発者は、ビジネス ニーズを満たすカスタム検証ルールを作成できます。

Bean Validation フレームワークは、Java Beans のプロパティとメソッド パラメーターに適用できる、事前定義された検証ルールのセットを提供します。事前定義されたルールは次のとおりです。

@NotNull: null 値かどうかを確認します。

@Size: 文字列、コレクション、マップ、および配列の長さを確認します。

@Min, @ Max : 値のサイズを確認します

@Email : メールアドレスかどうかを確認します

@パターン : 正規表現に従って文字列を確認します

Bean Validation フレームワークには、クラスパスに javax.validation-api と、Hibernate Validator などの対応する Bean Validation 実装が含まれています。Maven を介して、次の依存関係を追加できます:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.10.Final</version>
</dependency>

3. Bean Validation example

ユーザーの基本情報を含む User クラスがあり、User クラスの属性を検証する必要があるとします。

public class User {
    private String name;
    private Integer age;
    private String email;
    private String address;
  
    // getters and setters
}

プロジェクトで必要な検証ルールは次のとおりです。

  1. name いいえ 空であり、長さは 5 より大きく 10 未満です。
  2. age は空ではなく、0 より大きく 200 未満です。
  3. email は空ではなく、有効な電子メール アドレスです。
  4. アドレスは空でもかまいません。

Bean Validation を使用してこれらの検証ルールを定義できます。具体的な実装は次のとおりです:

public class UserValidator {

    private Validator validator;

    public UserValidator() {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
    }

    /**
     * 对 User 对象进行校验
     * 
     * @param user
     * @return
     */
    public String validate(User user) {

        Set<ConstraintViolation<User>> violations = validator.validate(user);

        StringBuilder result = new StringBuilder();
        if (!violations.isEmpty()) {
            for (ConstraintViolation<User> violation : violations) {
                result.append(violation.getMessage()).append(";");
            }
        }

        return result.toString();
    }
}

UserValidator クラスでは、buildDefaultValidatorFactory によって作成された Validator ツール クラスを使用します。 () メソッド ValidatorFactory オブジェクト。これにより、インスタンス化された Validator オブジェクトが作成されます。ユーザー オブジェクトは、 validator.validate(user) メソッドを呼び出すことで検証できます。検証結果については、すべてのエラー情報を StringBuilder オブジェクトに記録し、呼び出し側に返します。

最後に、テスト クラスで UserValidator オブジェクトを使用してテストを実行できます。

public class UserValidatorTest {
  
    @Test
    void testValidateUser() {
        User user = new User();
        user.setName("abcd");
        user.setAge(300);
        user.setEmail("abc");
        user.setAddress(null);

        UserValidator validator = new UserValidator();
        String result = validator.validate(user);

        assertThat(result, containsString("Name length must be between 5 and 10."));
        assertThat(result, containsString("Size must be between 1 and 200."));
        assertThat(result, containsString("must be a well-formed email address"));
    }
}

上記のテスト メソッドでは、属性が検証ルールに準拠しない User オブジェクトを作成しました。したがって、UserValidator の validate() メソッドを呼び出すと、対応するエラー メッセージが返されます。

4. 概要

この記事では、Bean Validation フレームワークの概念と使用法を紹介します。このフレームワークは、注釈を通じてパラメータを検証します。これは、開発者がコードを記述する際の入力エラーを防止し、実行時にユーザー入力エラーを検出してプロンプトを表示するのに役立ちます。同時に、開発者はビジネス ニーズに応じてカスタマイズされた検証ルールを作成し、より複雑な検証シナリオに対応できます。

以上がJava API開発におけるパラメータ検証にBean Validationを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。