ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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일 때 통과하지 못합니다.

     

     

    댓글

Designed by Tistory.