@Valid

Date:     Updated:

카테고리:

태그:

이전에는 spring-boot-starter-web 의존성 내부에 validation이 있었지만,
spring boot 2.3 version 이상부터는 아예 모듈로 빠져 validation 의존성을 따로 추가해줘야 사용할 수 있다.

  1. validation 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
  1. 표현식
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;

Spring 카테고리 내 다른 글 보러가기

댓글남기기