일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 검색
- ubuntu
- querydsl
- 테스트
- Query
- 메세지수정
- 네이티브쿼리
- 컨테이너실행
- 2 > /dev/null
- MySQL
- WeNews
- 테스트메소드
- 메소드명
- 서브쿼리
- EC2
- 외부키
- appspec.yml
- 커밋메세지수정
- 적용우선순위
- docker명령어
- 포트
- AuthenticationEntryPoint
- foreignkey
- appspec
- 추후정리
- 참조키
- ㅔㄴ션
- application.yml
- 예약
- subquery
- Today
- Total
제뉴어리의 모든것
DTO 유효성 검사시 주의 사항 (@NotBlank, @NotEmpty, @NotNull에 대하여) - 매우 중요 본문
DTO 유효성 검사시 주의 사항 (@NotBlank, @NotEmpty, @NotNull에 대하여) - 매우 중요
제뉴어리맨 2022. 8. 28. 00:30사전에 알아야 할점
- @NotBlank
NULL, "", " ", 다 안됨 - @NotEmpty
NULL, "" 만 안됨 (" " 은 됨) - @NotNull
NULL만 안됨 ("", " " 은 됨)
@NotBlank 사용시 주의사항
문자열에 대해서 유효성 검사를 하는 애노테이션이다.
그러므로 문자열이 아닌 타입에 해당 애노테이션을 붙인 상태에서,
해당 필드로 사용자의 요청으로 인해 데이터가 들어오려 하면서 유효성 검사를 할때 다음과 같은 에러가 발생한다.
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.util.Map<java.lang.String, java.lang.Object>'. Check configuration for '검사하려는 필드명'
그러므로, 문자열 타입의 필드에만 붙여주어야 한다.
참조 : https://docs.jboss.org/hibernate/validator/4.1/api/org/hibernate/validator/constraints/NotBlank.html
@NotEmpty 사용시 주의사항
문자열, 컬렉션. 맵, 또는 배열이 null이지 혹은 ""인지 체크한다.
그러므로, 기본타입형이나 사용자정의타입을 @NotEmpty로 유효성 검사를 하려고 하면
아래와 같은 에러가 발생한다.
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Character'. Check configuration for '검사하려는 필드명'
그러므로, 문자열, 컬렉션. 맵, 또는 배열 타입을 가진 필드에만 붙여주어야 한다.
참조 : https://docs.jboss.org/hibernate/validator/4.1/api/org/hibernate/validator/constraints/NotEmpty.html
@NotNull 사용시 주의사항
객체가 Null인지 체크하는 애노테이션이다.
그러므로 모든 객체타입은 다 검사가 가능하다.
그러므로, 객체 타입에만 붙이도록 하자
추가 주의사항
DTO 내부에 필드중 기본타입형에 @NotNull을 붙이면 무조건 유효성을 통과한다.
왜냐하면 기본타입 멤버필드는 자동으로 초기화가 되기 때문이다.
int형 타입에 @NotNull을 붙이면 원래 0이란 값이 들어가 있기에, 클라이언트가 요청시 아무런 데이터를 보내지 않아도 통과 되는것이다.
아래는 멤버변수 생성시 자동적으로 초기화 되는 기본값 목록이다.
- 멤버변수의 자동초기화 목록
이미지 참조 : https://feastforall.tistory.com/30
'Spring Boot' 카테고리의 다른 글
Junit테스트에서 설정한 @DisplayName이 Console창에 나타나지 않을때 (0) | 2022.09.07 |
---|---|
object references an unsaved transient instance - save the transient instance before flushing 에러 (1) | 2022.09.03 |
DTO 값 검증 처리 방법 (0) | 2021.04.21 |
favicon.ico 와 AuthenticationEntryPoint .. (0) | 2021.04.12 |
@Builder.Default (0) | 2021.04.09 |