| 種類 | ライブラリ | メソッド / アノテーション | チェック条件 | 使用例 | null |
"" |
" " |
"abc" |
|---|---|---|---|---|---|---|---|---|
| Annotation | javax.validation.constraints |
@NotNull |
null のみ不可 |
@NotNull String s |
❌ | ✅ | ✅ | ✅ |
| Annotation | javax.validation.constraints |
@NotEmpty |
null または空文字列不可 |
@NotEmpty String s |
❌ | ❌ | ✅ | ✅ |
| Annotation | javax.validation.constraints |
@NotBlank |
null・空文字列・空白文字列すべて不可 |
@NotBlank String s |
❌ | ❌ | ❌ | ✅ |
| Utility | java.util.Objects |
nonNull() / isNull() |
null のみをチェック |
Objects.nonNull(str) |
❌ | ✅ | ✅ | ✅ |
| Utility | org.springframework.util |
StringUtils.hasText() |
null・空文字列・空白文字列不可 |
hasText(str) |
❌ | ❌ | ❌ | ✅ |
| Utility | org.springframework.util |
StringUtils.hasLength() |
null 不可・長さ1以上でOK |
hasLength(str) |
❌ | ❌ | ✅ | ✅ |
| Utility | org.apache.commons.lang3 |
StringUtils.isEmpty() |
null または空文字列なら ✅ |
isEmpty(str) |
✅ | ✅ | ❌ | ❌ |
| Utility | org.apache.commons.lang3 |
StringUtils.isBlank() |
null・空文字列・空白文字列なら ✅ |
isBlank(str) |
✅ | ✅ | ✅ | ❌ |
| Utility | org.springframework.util |
ObjectUtils.isEmpty() |
null、空文字列、空コレクションなども ✅ |
ObjectUtils.isEmpty(str) |
✅ | ✅ | ❌ | ❌ |
| Utility | org.apache.commons.lang3 (3.13〜) |
ObjectUtils.isEmpty() |
null または empty なら ✅ |
ObjectUtils.isEmpty(str) |
✅ | ✅ | ❌ | ❌ |
| 어노테이션 | 설명 | 비고 |
|---|---|---|
@NotNull |
null이 아니어야 함 | null만 체크 (빈 문자열 허용) |
@NotEmpty |
null/빈 문자열/빈 컬렉션 불가 | 문자열, 컬렉션 |
@NotBlank |
null/공백 문자열 불가 | 문자열 전용 |
@Size(min=, max=) |
문자열, 배열, 컬렉션 길이 제한 | 예: 이름 최소 2글자 |
@Min(value=) |
최소값 | 숫자 |
@Max(value=) |
최대값 | 숫자 |
@Positive |
양수 | 0 제외 |
@PositiveOrZero |
양수 또는 0 | |
@Negative |
음수 | |
@NegativeOrZero |
음수 또는 0 | |
@Pattern(regexp=) |
정규표현식과 일치 | 문자열 |
@Email |
이메일 형식 | |
@Past, @PastOrPresent |
과거 날짜 (또는 현재 포함) | java.time.* |
@Future, @FutureOrPresent |
미래 날짜 (또는 현재 포함) | |
@Digits(integer=, fraction=) |
정수/소수 자리수 제한 | 숫자형 |
| 어노테이션 | 메시지 키 (기본값) |
|---|---|
@NotNull |
jakarta.validation.constraints.NotNull.message = must not be null |
@NotEmpty |
jakarta.validation.constraints.NotEmpty.message = must not be empty |
@NotBlank |
jakarta.validation.constraints.NotBlank.message = must not be blank |
@Size |
jakarta.validation.constraints.Size.message = size must be between {min} and {max} |
@Min |
jakarta.validation.constraints.Min.message = must be greater than or equal to {value} |
@Max |
jakarta.validation.constraints.Max.message = must be less than or equal to {value} |
@Positive |
jakarta.validation.constraints.Positive.message = must be greater than 0 |
@PositiveOrZero |
jakarta.validation.constraints.PositiveOrZero.message = must be greater than or equal to 0 |
@Negative |
jakarta.validation.constraints.Negative.message = must be less than 0 |
@NegativeOrZero |
jakarta.validation.constraints.NegativeOrZero.message = must be less than or equal to 0 |
@Pattern |
jakarta.validation.constraints.Pattern.message = must match "{regexp}" |
@Email |
jakarta.validation.constraints.Email.message = must be a well-formed email address |
@Past |
jakarta.validation.constraints.Past.message = must be a past date |
@PastOrPresent |
jakarta.validation.constraints.PastOrPresent.message = must be a date in the past or in the present |
@Future |
jakarta.validation.constraints.Future.message = must be a future date |
@FutureOrPresent |
jakarta.validation.constraints.FutureOrPresent.message = must be a date in the present or in the future |
@Digits |
jakarta.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) |
#aaa