본문으로 건너뛰기

스프링부트 어노테이션 Validation

Entity나 DTO에 물려서 사용한다. 자주 쓰이니 리스트 뽑아놓고 필요할때 사용하자

  • @NotNull: 필드 값이 null이 아니어야 합니다.

  • @NotEmpty: 문자열, 컬렉션, 배열 등이 null이 아니고, 비어있지 않아야 합니다.

  • @NotBlank: 문자열이 null이 아니고, 공백이 아니며, 적어도 하나의 문자를 가져야 합니다.

  • @Size: 문자열, 컬렉션, 배열 등의 크기를 제한합니다.

  • @Size(min = 2, max = 30): 최소 2글자에서 최대 30글자까지 허용합니다.

  • @Min: 숫자 값의 최소값을 지정합니다.

  • @Max: 숫자 값의 최대값을 지정합니다.

  • @DecimalMin: 실수 값의 최소값을 지정합니다.

  • @DecimalMax: 실수 값의 최대값을 지정합니다.

  • @Positive: 양수 값만 허용합니다.

  • @PositiveOrZero: 양수 또는 0을 허용합니다.

  • @Negative: 음수 값만 허용합니다.

  • @NegativeOrZero: 음수 또는 0을 허용합니다.

  • @Email: 이메일 주소 형식을 검사합니다.

  • @Pattern: 정규표현식을 사용하여 필드 값을 검사합니다.

  • @AssertTrue: boolean 필드가 true인지 확인합니다.

  • @AssertFalse: boolean 필드가 false인지 확인합니다.

  • @AssertNull: 필드 값이 null인지 확인합니다.

  • @AssertNotNull: 필드 값이 null이 아닌지 확인합니다.

  • @AssertFalse: boolean 필드가 false인지 확인합니다.

  • @Past: 날짜 필드가 과거인지 확인합니다.

  • @Future: 날짜 필드가 미래인지 확인합니다.

  • @Valid: 중첩된 객체나 컬렉션에 대한 유효성 검사를 활성화합니다.

  • @Digits: 숫자 필드의 정수 부분과 소수 부분 자리수를 지정합니다.

  • @Digits(integer = 3, fraction = 2): 정수 3자리와 소수점 아래 2자리를 허용합니다.

  • @Range: 숫자 범위를 지정합니다.

  • @Range(min = 1, max = 100): 1 이상 100 이하의 값만 허용합니다.

  • @CreditCardNumber: 신용카드 번호 형식을 검사합니다.

  • @URL: URL 형식을 검사합니다.

  • @NotEmpty: 문자열, 컬렉션, 배열 등이 null이 아니고, 비어있지 않아야 합니다. (주로 컬렉션과 배열에 사용됩니다)

  • @Valid: 중첩된 객체나 컬렉션에 대한 유효성 검사를 활성화합니다.

기본예제

public class MyDto {
@NotNull
@Size(min = 2, max = 30)
private String name;

@Email
private String email;

@Min(18)
private int age;

@Past
private LocalDate birthDate;

@AssertTrue
private boolean agreement;

@Digits(integer = 3, fraction = 2)
private BigDecimal amount;

@Range(min = 1, max = 100)
private int quantity;

@CreditCardNumber
private String creditCardNumber;

@URL
private String websiteUrl;

@NotEmpty
private List<String> items;

// Getters, Setters, Constructors, etc.
}

valid(중첩일때) 예제

이렇게 내부 오브젝트 위에 달아주고, 내부 오브젝트 안에서는 보통의 벨리데이션 어노테이션을 사용하면 된다.

public class ParentDto {
@NotNull
@Size(min = 2, max = 30)
private String name;

@Valid
private ChildDto childDto;

// Getters, Setters, Constructors, etc.
}
public class ChildDto {
@NotNull
@Min(1)
private Integer age;

// Getters, Setters, Constructors, etc.
}