스프링부트 어노테이션 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.
}