글자수 양식 제한 구현 Spring boot

Jakarta Bean Validation Constraints 사용 방법

아이디나 비밀번호에 작성 제한(글자수, 한글, 특수문자 등)을 둘 때 쓰는 @Size 나 @Pattern 이 들어있는 패키지입니다.

 

아래 코드를 Build.gradle의 dependencies 에 입력하시면 사용할 수 있습니다.

 

implementation 'org.springframework.boot:spring-boot-starter-validation'

 

@Size @Pattern 사용 아이디 비밀번호 제한 두기

@Size 사용 방법

@Size 어노테이션이 붙은 element는 지정한 값의 사이(지정값 포함)에 있어야 합니다. 

 

최소값과 최대값을 결정할 수 있습니다.

 

jakarta.validation.constraints를 사용하기 위해 아래를 import 합니다.

import jakarta.validation.constraints.Size;

 

제한을 두고 싶은 변수 위에 아래 어노테이션을 입력하고,

 

@Size

최소길이값은 min = 4

최대길이값은 max = 10

 

@Size(min=4, max=10)

필요하다면 뒤에 메세지를 추가 할 수 있습니다.

 

@Pattern 사용 방법

@Pattern 어노테이션이 붙은 element는 특정한 조건을 만족해야 합니다.

 

 

jakarta.validation.constraints를 사용하기 위해 아래를 import 합니다.

import jakarta.validation.constraints.Pattern;

 

제한을 두고 싶은 변수 위에 아래 어노테이션을 입력합니다

@Pattern

정규표현식(Regular Expression)을 사용해서 조건을 입력합니다.

regexp= 조건

@Pattern(regexp = "[a-z0-9]*$")
정규 표현식(Regular Expression) 설명
^[0-9]*$ 숫자
^[a-zA-Z]*$ 영문
^[가-힣]*$ 한글
\\w+@\\w+\\.\\w+(\\.\\w+)? 이메일주소
[] 문자의 집합 범위
{} 횟수 또는 범위
* 문자가 1번이상 발생
^ 문자열의 시작
$ 문자열의 끝
\ 확장 문자의 시작
\w 알파벳이나 숫자

 

 

 

아이디, 비밀번호 입력 제한 예시

// nullable: null 허용 여부
// unique: 중복 허용 여부 (false 일때 중복 허용)
@Column(nullable = false, unique = true)
@Size(min = 4, max = 10, message = "아이디의 길이는 4자에서 10자 사이입니다")
@Pattern(regexp = "[a-z0-9]*$", message = "아이디 형식이 일치하지 않습니다")
private String username;

@Column(nullable = false)
@Size(min = 8, max = 15, message = "비밀번호의 길이는 8자에서 15자 사이입니다")
@Pattern(regexp = "[a-zA-Z0-9`~!@#$%^&*()_=+|{};:,.<>/?]*$", message = "비밀번호 형식이 일치하지 않습니다")
private String password;

 

공식 문서

아래 Jakarta Bean Validation 공식문서를 참조하시면 도움이 됩니다.

Jakarta Bean Validation에서 사용할 수 있는 어노테이션에 대한 설명이 나와있습니다.

 

Jakarta Bean Validation specification

BeanNode, PropertyNode and ContainerElementNode host getContainerClass() and getTypeArgumentIndex(). If the node represents an element that is contained in a container such as Optional, List or Map, the former returns the declared type of the container and

jakarta.ee

 

+ Recent posts