-
Spring Boot - 유효성 검증 ( Validate )SpringBoot/유효성 검증 2021. 6. 18. 00:01
Maven Dependency 입니다.
Pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
Gradle
implementation 'org.springframework.boot:spring-boot-starter-validation'
BoardRequestDto.class 이런 간단한 예제를 사용해보겠습니다.
import com.exam.demo.domain.board.Board; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.AssertTrue; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.util.List; @Getter @Setter public class BoardRequestDto { @Size(max = 5, message = "5자 이하로 작성해주세요.") private String sizeContent; @NotNull(message = "null 넣지마세요.") private String nullContent; @NotEmpty(message = "null, '' 넣지마세요.") private String emptyContent; @NotBlank(message = "null, '', ' ' 넣지마세요.") private String blankContent; @AssertTrue(message = "true여야 합니다.") private boolean real; }
위에 작성된 javax.validation.constraint. ? 어노테이션들이 주로 사용되는 Validate 어노테이션입니다.
먼저 간단하게 설명한 뒤 아래에서 직접 확인해보겠습니다.
1. Size
Size는 해당 필드의 크기를 정할 수 있습니다.
@Size를 필드 위에 작성한 뒤 속성 값으로 ( min, max, message ) 등을 지정할 수 있습니다.
min = 최솟값 설정
max = 최댓값 설정
message = 설정한 값의 범위를 넘어갔을 때 보여지는 메시지
예를 들어 아이디 혹은 비밀번호 길이의 제한을 걸 때 유용하게 사용할 수 있습니다. ( 정규식과 함께라면 두배 )
5글자 미만일 때 5글자 미만으로 데이터를 전송했을 때 정상적으로 동작하는 것을 확인할 수 있습니다.
5글자 이상일 때 5글자 이상으로 데이터를 전송했을 때 Valid에 걸려
MethodArgumentNotValidException [ code : 400 ]이 보여지는 것을 확인할 수 있습니다.
제가 사용하는 예제에서는 보기 편하게 따로 Error Dto를 작성해 저렇게 보이고 안만드시는 분들은
기존의 에러 코드가 나오는 것이 정상입니다.
2. Not 3형제
다 비슷비슷한 역할을 하지만 세세하게 다르게 제한합니다.
NotNull = 'NULL' 값을 제외한 모든 값을 통과시킵니다. ( "" or " " )또한 통과시킵니다.
NotEmpty = 'NULL' 값, " "을 제외한 모든 값을 통과시킵니다. ( "" )는 통과시키지 않음.
NotBlank = 'NULL', " ", ""을 제외한 모든 값을 통과시킵니다. ( 널 값과 공백을 통과시키지 않음. )
제약이 강한순서는
NotBlank > NotEmpty > NotNull 입니다.
message 속성은 size와 같이 통과하지 못했을 때 보여지는 메시지입니다.
이제 PostMan을 통해 실제로 값이 어떻게 나오는지 확인해보겠습니다.
NotNull
null 아닐 때 null이 아닐 때 정상적으로 통과합니다.
null일 때 null일 때 통과되지 않습니다.
NotEmpty
""일 때 ""는 통과하지 못합니다.
" "일 때 " "는 정상적으로 통과합니다.
null, ""이 아닐 때 null, ""가 아니기에 통과합니다.
NotBlank
null, '', ' ' 다 아닐 때 정상적으로 통과합니다.
null일 때 null 통과하지 못합니다.
""일 때 "" 통과하지 못합니다.
" "일 때 " " 역시 통과하지 못함을 알 수 있습니다.
3. AssertTrue & AssertFalse
어노테이션 값에 따라 필드 값이 True or False 인 경우에만 통과시킵니다.
message 속성은 size와 같이 통과하지 못했을 때 보여지는 메시지입니다.
이제 PostMan을 통해 실제로 값이 어떻게 나오는지 확인해보겠습니다.
AssertTrue
true일 때 true일 때 통과하는 모습입니다.
false일 때 false일 때 통과하지 못합니다.