
[ @NotNull ]
필드의 값이 null이 아니어야 함
[ @NotEmpty ]
어노테이션이 붙은 필드의 값이 null이 아니며, 빈 문자열("")이나 빈 컬렉션([])이 아닐 것
문자열, 컬렉션, 맵, 배열 등에 사용
[ @NotBlank ]
문자열 필드가 null이 아니고, trim()한 결과가 빈 문자열("")이 아니어야 함.
주로 문자열에 적용
[ @Size(min, max) ]
컬렉션, 배열, 문자열 등의 값의 크기가 지정된 범위 내에 있어야 함
[ @Min(value) ]
숫자 필드가 지정된 최솟값 이상이어야 함
[ @Max(value) ]
숫자 필드가 지정된 최댓값 이하이어야 함
[ @Email ]
문자열 필드가 이메일 주소 형식에 맞아야 함
[ @Pattern(regex) ]
문자열 필드가 지정된 정규 표현식과 일치해야 함
[ @AssertTrue ]
boolean 필드가 true이어야 함
[ @AssertFalse ]
boolean 필드가 false이어야 함
[ +어노테이션 어떻게 쓰는지 참고용 ]
https://github.com/codingspecialist/kakao-shop-api/blob/master/src/main/java/com/example/kakao/user/UserRequest.java
public class UserRequest {
@Getter
@Setter
public static class JoinDTO {
@NotEmpty
@Pattern(regexp = "^[\\w._%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$", message = "이메일 형식으로 작성해주세요")
private String email;
@NotEmpty
@Size(min = 8, max = 20, message = "8에서 20자 이내여야 합니다.")
@Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[@#$%^&+=!~`<>,./?;:'\"\\[\\]{}\\\\()|_-])\\S*$", message = "영문, 숫자, 특수문자가 포함되어야하고 공백이 포함될 수 없습니다.")
private String password;
@NotEmpty
private String username;
public User toEntity() {
return User.builder()
.email(email)
.password(password)
.username(username)
.roles(Collections.singletonList("ROLE_USER"))
.build();
}
}
@Getter
@Setter
public static class LoginDTO {
@NotEmpty
@Pattern(regexp = "^[\\w._%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$", message = "이메일 형식으로 작성해주세요")
private String email;
@NotEmpty
@Size(min = 8, max = 20, message = "8에서 20자 이내여야 합니다.")
@Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[@#$%^&+=!~`<>,./?;:'\"\\[\\]{}\\\\()|_-])\\S*$", message = "영문, 숫자, 특수문자가 포함되어야하고 공백이 포함될 수 없습니다.")
private String password;
}
@Getter
@Setter
public static class EmailCheckDTO {
@NotEmpty
@Pattern(regexp = "^[\\w._%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$", message = "이메일 형식으로 작성해주세요")
private String email;
}
}
"^[\\w._%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$"는 이메일 주소의 유효성을 검사하기 위한 정규 표현식… 이런 식으로 뤼튼한테 물어보고 작성한다
Share article