JavaのSpring Frameworkのバリデーションの機能(Bean Validation
)に関する紹介です。数値なら最小値、最大値のチェックをしたり、文字列なら長さのチェックができます。
🎳 整数の最小値のチェック:@Min
最小値を指定するアノテーションでint, long, Integer, Long
をサポートしています。
public class Book { @Min(1) private int price; }
|
🎉 整数の最大値のチェック:@Max
最大値を指定するアノテーションでint, long, Integer, Long
をサポートしています。
public class Book { @Max(1000000) private int price; }
|
🐠 オリジナルのバリデーションの追加
オリジナルのバリデーションを自作します。
アノテーション・クラス
まず、アノテーションのクラスは次のように定義します。
package com.example.validation;
import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.*;
@Documented @Constraint(validatedBy = {ArticleTitleValidator.class}) @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface ArticleTitle {
String message() default "{com.example.validation.ArticleTitle.message}";
Class>[] groups() default {};
Class extends Payload>[] payload() default {}; }
|
バリデーション・クラス
続いてバリデーションを行うクラスを定義します。
package com.example.validation;
import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;
import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;
@Component public class ArticleTitleValidator implements ConstraintValidator<ArticleTitle, String> {
@Autowired ArticleService service;
@Override public void initialize(ArticleTitle constraint) { }
@Override public boolean isValid(String value, ConstraintValidatorContext context) { if (StringUtils.isEmpty(value)) { return true; }
return service.findByTitle(value) == null; } }
|
メッセージの設定
バリデーション(Validation)時のメッセージを定義します。native2ascii
でASCIIまたはUnicodeに変換します。
変換された結果をValidationMessages.properties
に定義します。(下のメッセージは「タイトルはユニークにしてください」です)
com.example.validation.ArticleTitle.message=\u30bf\u30a4\u30c8\u30eb\u306f\u30e6\u30cb\u30fc\u30af\u306b\u3057\u3066\u304f\u3060\u3055\u3044
|
Validatorの適用
package com.example.validation;
class Article { @ArticleTitle private String title; }
|
🐡 参考リンク
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!