Spring Boot での JSR-303 データ検証の使用
Web 開発では、データ検証は非常に重要なリンクです。これは、ユーザーがフォーム データを送信するときにデータの合法性を検証し、不要なエラーや抜け穴を防ぐのに役立ちます。Spring Boot では、JSR-303 データ検証仕様を使用してデータ検証を実装できます。この記事では、Spring Boot で JSR-303 データ検証を使用する方法を紹介し、その使用法を示すサンプル コードを提供します。
JSR-303 データ検証とは何ですか?
JSR-303 は Java のデータ検証仕様です。Java オブジェクトのプロパティを検証するために使用できる一連のアノテーションを定義します。Spring Boot では、JSR-303 データ検証仕様を使用してフォーム データの有効性を検証できます。
JSR-303 データ検証を使用する
Spring Boot では、@Valid
アノテーションを、JSR-303 のアノテーションを使用して検証が必要なプロパティを示すことができます。たとえば、User
という名前の、そのオブジェクトusername
とpassword
プロパティを検証したい場合は、次のコードを使用できます。
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
private String password;
// 省略 getter 和 setter 方法
}
上記のサンプル コードでは、JSR-303 の@NotBlank
アノテーションをusername
およびpassword
属性をnull にできないことを示しました。これらのプロパティが空の場合、検証は失敗し、エラー メッセージを含むオブジェクトが返されます。
コントローラーでは、@Valid
アノテーション。例えば:
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity<?> createUser(@Valid @RequestBody User user) {
// 创建用户
return ResponseEntity.ok().build();
}
}
上記のサンプル コードでは、@Valid
アノテーションRequestBody
内のUser
オブジェクトを検証する必要があることを示しました。検証が失敗した場合、Spring Boot は自動的にエラー メッセージを含む応答を返します。
バリデーター
検証に JSR-303 アノテーションを使用することに加えて、バリデーターをカスタマイズして、より複雑な検証ロジックを実装することもできます。Spring Boot では、org.springframework.validation.Validator
インターフェイス。
以下は、オブジェクトのおよびプロパティをUser
検証するバリデーターの例です。username
password
@Component
public class UserValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return User.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User) target;
if (StringUtils.isEmpty(user.getUsername())) {
errors.rejectValue("username", "username.empty");
}
if (StringUtils.isEmpty(user.getPassword())) {
errors.rejectValue("password", "password.empty");
}
}
}
上記のサンプル コードでは、org.springframework.validation.Validator
インターフェイス、supports
およびvalidate
メソッドをオーバーライドしました。supports
バリデーターが指定されたオブジェクトの検証をサポートしているかどうかを判断するために使用されるメソッド。この例では、バリデーターがUser
タイプ。validate
メソッドは、オブジェクトを実際に検証するために使用されます。この例ではUser
、オブジェクトのusername
プロパティとpassword
プロパティ空であることを確認し、Errors
そのオブジェクトを使用してエラー メッセージを保持します。
コントローラーでは、Errors
オブジェクト検証結果を取得し、エラーの処理方法を決定できます。例えば:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserValidator userValidator;
@PostMapping
public ResponseEntity<?> createUser(@RequestBody User user, Errors errors) {
userValidator.validate(user, errors);
if (errors.hasErrors()) {
// 处理校验错误
return ResponseEntity.badRequest().body(errors.getAllErrors());
}
// 创建用户
return ResponseEntity.ok().build();
}
}
上記のサンプル コードでは、Errors
オブジェクトを、userValidator.validate(user, errors)
検証のためにメソッド内でメソッドを呼び出します。検証が失敗した場合は、errors.getAllErrors()
メソッドを。検証が成功した場合は、ユーザーを作成し、成功の応答を返します。
要約する
この記事では、Spring Boot で JSR-303 データ検証を使用する方法を紹介し、その使用法を示すサンプル コードを提供しました。データ検証を使用すると、Web アプリケーションのセキュリティと信頼性が向上し、不要なエラーや脆弱性が軽減されます。Web アプリケーションの開発時にデータ検証が必要な場合は、JSR-303 データ検証仕様の使用を必ず検討してください。