@Valid
카테고리: Spring
태그: Annotation Valid
이전에는 spring-boot-starter-web 의존성 내부에 validation이 있었지만,
spring boot 2.3 version 이상부터는 아예 모듈로 빠져 validation 의존성을 따로 추가해줘야 사용할 수 있다.
- validation 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
- 표현식
1. (?=.*[0-9]) 0 ~ 9 까지 최소 한개를 의미
2. (?=.*[a-z]) a ~ z 까지 영어 소문자 최소 한개
3. (?=.*[A-Z]) A ~ Z 까지 영어 대문자 최소 한개
4. .{9,20} 선행 표현식에 맞는 9 ~ 20 자리 문자열
5. (?=.*\\W) 특수문자 최소 한개 입력
6. (?=.*\\S+$) 공백문자 허용하지 않음
이 표현식들로 코드를 만들어보자.
예시)
public class Member{
@Column(nullable = false)
@NotBlank(message = "빈 문자열, null 허용 X") // null, "", " " 모두 허용하지 않습니다.
@Size(min=4, max=12, message = "총 4~12 개 문자로 구성") // 길이를 제한할 때 사용됩니다.
@Pattern(regexp = "(?=.*[0-9])(?=.*[a-z]",
message = "대문자를 허용하지 않으며, 소문자와 숫자의 조합만 허용")// 정규식을 검사할 때 사용됩니다.
private String nickname;
@Column(nullable = false)
@JsonIgnore
@Pattern(regexp = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\\W)(?=\\S+$)(?=.*?[~!@#$%^&*()+|=]).{8,20}",
message = "빈 문자열, null 허용, 총 8~20 개 문자로 구성, 영문자(대소문자 구분 없음), 숫자, 특수문자를 무조건 1개 이상 포함해야함 특수문자는 ~!@#$%^&*()+|= 만 가능") // 정규식을 검사할 때 사용됩니다.정규식을 검사할 때 사용됩니다.
private String password;
}
이렇게 만들어볼수 있다.
여기서 조금 코드를 줄여보자면, 아래의 코드처럼 변경할 수 있다.
public class Member {
@Column(nullable = false)
@Pattern(regexp = "(?=.*[0-9])(?=.*[a-z])(?=\\S+$).{4,12}",
message = "빈 문자열, null 허용 X, 대문자를 허용하지 않으며, 소문자와 숫자의 조합만 허용")// 정규식을 검사할 때 사용됩니다.
private String nickname;
@Column(nullable = false)
@JsonIgnore
@Pattern(regexp = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\\W)(?=\\S+$)(?=.*?[~!@#$%^&*()+|=]).{8,20}",
message = "빈 문자열, null 허용, 총 8~20 개 문자로 구성, 영문자(대소문자 구분 없음), 숫자, 특수문자를 무조건 1개 이상 포함해야함 특수문자는 ~!@#$%^&*()+|= 만 가능") // 정규식을 검사할 때 사용됩니다.
private String password;
댓글남기기