Spring のパラメーター検証 @Validation アノテーションの詳細な紹介

Spring フレームワークでは、@Validアノテーションは、ユーザーが入力したデータを検証してデータの合法性と整合性を確保するための強力なツールです。他のアノテーションやバリデーターと組み合わせることで、@Validアノテーションはデータ検証を簡単に実装できるため、アプリケーションの堅牢性とセキュリティが向上します。この記事では、Spring のアノテーション@Validと、それをアプリケーションで正しく使用する方法について詳しく説明します。

注釈とは何ですか@Valid?

@Validアノテーションは Spring フレームワークのアノテーションで、メソッドのパラメーターまたはメソッドの戻り値のデータ検証の対象をマークするために使用されます。これは、メソッド呼び出しを処理するときにデータ検証を実行するように Spring に指示します。@NotNullこのアノテーションは通常、検証ルールを指定するために、@NotBlank@Min、などの他の検証関連のアノテーションと組み合わせて使用​​されます@Max

@Validアノテーションを使用したメソッドパラメータの検証

メソッドのパラメータにアノテーションを使用すると@Valid、メソッドの呼び出し前にパラメータを検証できます。これは、入力データの有効性を保証するのに役立ちます。

@ValidSpring コントローラー メソッドでパラメーター検証にアノテーションを使用する方法を示す例を次に示します。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    
    

    @PostMapping("/register")
    public ResponseEntity<String> registerUser(@Valid @RequestBody UserDto userDto) {
    
    
        // 处理用户注册逻辑
        return ResponseEntity.ok("User registered successfully");
    }
}

上の例では、パラメータに@Validアノテーションが使用されています。userDtoSpring はregisterUserメソッドを呼び出す前にuserDtoパラメータのプロパティを検証します。

他の検証アノテーションと組み合わせる

通常、@Validアノテーションは、検証ルールを定義するために他の検証関連のアノテーションと組み合わせて使用​​されます。たとえば@NotNull@NotBlank@Min@Maxなどの注釈を使用して、属性に対してより具体的な検証を実行できます。

public class UserDto {
    
    

    @NotNull
    @NotBlank
    private String username;

    @NotNull
    @Min(18)
    private Integer age;

    // ...其他属性和方法
}

上の例では、username属性には@NotNullとの注釈が付けられており@NotBlank、空にすることはできず、スペースだけを含めることもできないことを示しています。age属性には@NotNullとの注釈が付けられ@Min(18)、空にすることはできず、18 以上である必要があることを示します。
Spring フレームワークでは、さまざまな検証アノテーションを使用して、さまざまな種類の検証ルールを定義できます。これらの注釈はパッケージの下にありjavax.validation.constraints、データのさまざまな側面を検証するために使用されます。以下に、いくつかの一般的な検証アノテーションとそれに対応する検証ルールを示します。

  1. @NotNull:検証フィールドは使用できませんnull

  2. @NotBlank:検証文字列を空にすることはできず、少なくとも 1 つの非 null 文字が含まれています。

  3. @NotEmpty:文字列、コレクション、または配列が空でないことの検証とは異なり、@NotBlank少なくとも 1 つの非 null 文字は必要ありません。

  4. @Min(value):検証番号は、指定された最小値以上である必要があります。

  5. @Max(value):検証番号は、指定された最大値以下である必要があります。

  6. @Size(max, min):文字列、コレクション、または配列のサイズが指定された範囲内にある必要があることを検証します。

  7. @Email:文字列が有効な電子メール アドレスであることを確認してください。

  8. @Pattern(regexp)処置:文字列が指定された正規表現と一致することを確認してください。

  9. @Digits(integer, fraction):数値が、整数部と小数部を含む指定された桁数を満たしていることを検証します。

  10. @Positive:検証番号は正の値である必要があります。

  11. @Negative:検証番号は負の値である必要があります。

  12. @Past:検証日は過去のものである必要があります。

  13. @Future:検証日は将来の日付である必要があります。

  14. @AssertTrue:検証フィールドは である必要がありますtrue

  15. @AssertFalse:検証フィールドは である必要がありますfalse

  16. @CreditCardNumber:文字列が有効なクレジット カード番号であることを確認してください。

  17. @URL:文字列が有効な URL かどうかを確認してください。

  18. @Valid:ネストされた検証が必要なオブジェクトをマークするために使用されます。

これらは一般的な検証アノテーションの一部にすぎません。実際、Spring ではさらに多くの検証アノテーションが利用可能です。適切な検証アノテーションを選択して、特定のビジネス ニーズに基づいてデータ検証ルールを定義できます。さらに、特定の検証要件を満たすために、カスタム バリデーターによってより複雑な検証ロジックを実装することもできます。

カスタムバリデーター

事前定義された検証アノテーションの使用に加えて、特定の検証ニーズを満たすカスタム バリデータを作成することもできます。カスタム バリデータを作成するには、javax.validation.ConstraintValidatorインターフェイスを実装します。

以下は、カスタム バリデーターの作成方法を示す例です。

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class AgeConstraintValidator implements ConstraintValidator<AgeConstraint, Integer> {
    
    

    @Override
    public boolean isValid(Integer age, ConstraintValidatorContext context) {
    
    
        return age != null && age >= 18;
    }
}

その後、カスタム アノテーションでこのバリデータを使用できます。

import javax.validation.Constraint;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Target({
    
    FIELD, METHOD, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = AgeConstraintValidator.class)
public @interface AgeConstraint {
    
    
    String message() default "Invalid age";
    Class<?>[] groups() default {
    
    };
    Class<? extends Payload>[] payload() default {
    
    };
}

最後に、このカスタム アノテーションを検証する必要があるプロパティに適用します。

public class UserDto {
    
    

    @NotNull
    @NotBlank
    private String username;

    @AgeConstraint
    private Integer age;

    // ...其他属性和方法
}

要約する

@Validアノテーションは、データの検証と検証のための Spring フレームワークの重要なツールです。他の検証アノテーションやカスタムバリデータと組み合わせると、

ユーザーが入力したデータを簡単に検証し、アプリケーションの安定性とセキュリティを向上させます。メソッドのパラメータまたはメソッドの戻り値にアノテーションを追加することで@Valid、データの有効性を確保し、データが無効な場合には対応するエラー メッセージを生成することができるため、ユーザー エクスペリエンスとデータの整合性が向上します。

おすすめ

転載: blog.csdn.net/weixin_42279822/article/details/132188717