[Spring] Spring 검증 기능2 (Bean Validation)

2022. 6. 9. 09:00· FRAMEWORK/[SPRING]
목차
  1. 1. Bean Validation
  2. 2. 검증 어노테이션
  3. 3. 검증 순서
  4. 4. @Valid, @Validated 차이
  5. 5. HttpMessageConverter에서의 검증
  6. ※ 참고

[Spring] Spring 검증 기능2 (Bean Validation)


1. Bean Validation

  • 어노테이션을 사용하여 간단한 필드 검증 로직을 할 수 있게 하는 것
  • 자바 기술 표준 중 하나
    • 검증 어노테이션과 여러 인터페이스의 모음
  • 일반적으로 hibernate-validator 구현체 사용 → ORM과 관련X
  • spring-boot-starter-validation 라이브러리를 의존관계에 추가하여 사용


2. 검증 어노테이션

  • @NotNull : null을 허용하지 않음
  • @NotBlank : 빈값 혹은 공백만 있는 경우를 허용하지 않음
  • @Range(min = 10, max = 100) : 범위 안의 값이어야 함
  • @Max(100) : 최대 100까지 허용
  • @Min(100) : 최소 100까지 허용
  • 이외에도 다양한 검증 어노테이션들이 있다. Reference
  • message로 기본 메시지 값을 설정할 수 있다.



3. 검증 순서

  1. @ModelAttribute가 있는 객체에서 각각 필드에 타입 변환을 시도
    1. 실패하면 typeMissmatch로 FieldError에 추가 후 다음으로
    2. 성공하면 다음으로
  2. Validator 적용
    1. 바인딩이 성공한 필드에만 적용

ObjectError는??

  • @ScriptAssert로 처리가 가능
    • 하지만 오브젝트 오류(글로벌 오류) 같은 경우에는 복잡한 경우가 많으므로 직접 자바 코드로 구현하는 편이 낫다.



4. @Valid, @Validated 차이

  • @Validated
    • 스프링 전용 검증 어노테이션
    • groups라는 기능 존재
      • groupd을 정해서 서로 다른 동작일때 다른 값으로 검증 가능
        • 개발할 때 보통 기능을 나누기 때문에 사용하지 않음
  • @Valid
    • 자바 표준 검증 어노테이션
  • 어떤것을 쓰던 Bean Validation은 잘 작동 함



5. HttpMessageConverter에서의 검증

  • @ModelAttribute는 각각의 필드를 바인딩하기 때문에 바인딩이 성공한 필드에 대해서는 검증이 가능
  • 하지만 HttpMessageConverter(ex) @RequestBody 사용)은 전체 객체 단위로 성공 or 실패가 결정되기 때문에 메시지 컨버터가 작동이 실패하면 검증이 안됨




※ 참고

  • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 김영한
저작자표시 (새창열림)

'FRAMEWORK > [SPRING]' 카테고리의 다른 글

[Spring] 스프링 필터(Filter) vs 인터셉터(Interceptor)  (0) 2022.08.09
[Spring] Jar vs War  (0) 2022.06.27
[Spring] Spring 검증 기능1 (BindingResult, Validator)  (0) 2022.06.07
[Spring] HttpMessageConverter  (0) 2022.06.06
[Spring] Spring MVC 구조  (0) 2022.06.05
  1. 1. Bean Validation
  2. 2. 검증 어노테이션
  3. 3. 검증 순서
  4. 4. @Valid, @Validated 차이
  5. 5. HttpMessageConverter에서의 검증
  6. ※ 참고
'FRAMEWORK/[SPRING]' 카테고리의 다른 글
  • [Spring] 스프링 필터(Filter) vs 인터셉터(Interceptor)
  • [Spring] Jar vs War
  • [Spring] Spring 검증 기능1 (BindingResult, Validator)
  • [Spring] HttpMessageConverter
쿠엔크
쿠엔크
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
쿠엔크
기러기는 기록기록
쿠엔크
전체
오늘
어제
  • 분류 전체보기 (132)
    • CS (46)
      • [OS] (12)
      • [NETWORK] (10)
      • [DATABASE] (11)
      • [BASIC CONCEPT] (1)
      • [DATA STRUCTURE] (7)
      • [ALGORITHM] (5)
    • LANGUAGE (17)
      • [JAVA] (17)
    • DESIGN_PATTERN (2)
    • FRAMEWORK (18)
      • [SPRING] (18)
    • ORM (11)
      • JPA (11)
    • AWS (7)
    • BOOK (10)
      • [자바 웹 개발 워크북] (3)
      • [이펙티브 자바] (7)
    • 개발 (19)
      • [오류] (7)
      • [고민] (1)
      • [우테코] (10)
      • [iTracker] (1)
    • Tip (1)
      • [Plugins] (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CORS
  • Spring
  • 운영체제
  • 자바 웹 개발 워크북
  • JPA
  • 오류
  • java
  • ArgumentResolver
  • 자료구조
  • 디자인 패턴
  • 개념
  • 알고리즘
  • JVM
  • Effective Java
  • 네트워크
  • 스프링
  • aws
  • HTTP
  • 가비아
  • 데이터베이스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
쿠엔크
[Spring] Spring 검증 기능2 (Bean Validation)

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.