민뭉아치
민뭉아치
민뭉아치
전체 방문자
오늘
어제
  • 분류 전체보기 (62)
    • ㅁㅁㅇㅊ's Life (0)
      • Diary (1)
      • Certification (6)
      • English (1)
      • 독서 (1)
    • Algorithm (25)
    • Web (2)
    • Language (3)
      • JavaScript (1)
      • JAVA (2)
    • Spring boot (9)
    • Cloud (0)
    • DevOps (1)
    • Trouble Shooting (6)
    • 개발환경 (3)
    • 짤막IT지식 (4)

블로그 메뉴

  • 홈
  • 깃허브
  • 방명록

공지사항

인기 글

태그

  • 코딩테스트
  • 백준알고리즘
  • Spring
  • Algorithm
  • 자바
  • 정보처리기사
  • 알고리즘
  • Java
  • 백준
  • 자격증

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
민뭉아치

민뭉아치

Spring boot

[Spring Boot] Validation @Max 와 @Size의 차이

2022. 4. 11. 22:04

1. Validation이란?

Java에서 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공하여 필드에 annotation을 적용하여 제약 조건을 정의하기 위해 사용한다. Validation은 객체에 직접 정의하여 유효성 검사 로직의 문제를 해결할 수 있다.

2. Dependency 추가

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

 

3. Parameter 검증하기

@Valid 애노테이션을 객체에 적용하면 유효한 객체인지 검사한다.

BindingResult 객체를 통해 유효하지 않을 경우 Error를 확인할 수 있다.

@Controller
public class TestController {
    private static final Logger logger = LoggerFactory.getLogger(AuthController.class);

    @GetMapping(value = "/test")
    public ResponseEntity test(@Valid Member member, BindingResult bindingResult) {
        
        if (bindingResult.hasErrors()) {
            Map<String, String> errorMap = new HashMap<>();
            for (FieldError error : bindingResult.getFieldErrors()) {
                errorMap.put(error.getField(), error.getDefaultMessage());
                logger.info(error.getDefaultMessage());
            }
            return "ERROR!";
        }

        return ResponseEntity.ok(member);
    }
}

해당 객체 내부에서 필드에 제약조건 어노테이션을 붙일 수 있다.  

public class Member {
    @Size(20)
    @NotBlank
    private String username;
    @NotBlank
    private String password;
...
}

 

4. @Max와 @Size의 차이 

username의 최대 길이를 제한하기 위해 @Max를 사용하니 20자 이하임에도 불구하고 '20 이하여야 합니다' 라는 Error가 발생하였다.

 

@Max, @Min의 경우 숫자를 사용하는 필드를 검증하는데 사용된다고 한다.

String(숫자 표시), int, byte 등의 최대 길이를 제한하는 것이다.

 

@Size는 문자열, 배열 등의 크기를 검증하는데 사용된다.

username에 영어가 포함되면 String 문자열을 받기 때문에 @Size를 사용하여 제한하였다. 

 

참고 

https://stackoverflow.com/questions/11189398/difference-between-sizemax-value-and-minvalue-and-maxvalue

 

Difference between @size(max = value ) and @min(value) and @max(value)

I want to do some domain validation. In my object I have one integer. Now my question is: if I write @Min(SEQ_MIN_VALUE) @Max(SEQ_MAX_VALUE) private Integer sequence; and @Size(min = 1, max =

stackoverflow.com

https://bamdule.tistory.com/35

 

[Spring Boot] @Valid 어노테이션으로 Parameter 검증하기

java.validation의 @Valid 어노테이션 사용법 정리 글입니다. Spring Boot 라이브러리에서 기본적으로 탑재된 기능이며 따로 dependency해 줄 필요가 없습니다. Spring Boot Version은 2.2.2.RELEASE 입니다. 1. j..

bamdule.tistory.com

 

반응형

'Spring boot' 카테고리의 다른 글

[Spring Boot] @RequestHeader, Header의 데이터  (0) 2022.05.05
[Spring boot] 배포 패키징 jar 에서 war로 변경  (1) 2022.04.10
[Spring Boot] JPA 조회 작업 findById(), getOne()의 차이  (0) 2022.03.29
[Spring Boot] JPA Caching 적용하기  (0) 2022.03.21
[Spring Boot] PasswordEncoder.mathes() 암호화된 패스워드 비교  (0) 2022.03.21
    'Spring boot' 카테고리의 다른 글
    • [Spring Boot] @RequestHeader, Header의 데이터
    • [Spring boot] 배포 패키징 jar 에서 war로 변경
    • [Spring Boot] JPA 조회 작업 findById(), getOne()의 차이
    • [Spring Boot] JPA Caching 적용하기
    민뭉아치
    민뭉아치
    Do Better Today Than You Were Yesterday

    티스토리툴바