springboot에서 validation을 어떻게 진행하는지 알아보기
1. 사용자 입력 검증
0. 개요
PostDto 클래스 변수 - 제약사항들이 있음
제목 : 비어있지 않아야 함
본문 : 400자 이하
작성자 : 3자 이상 10자 이하
- 사용자의 입력은 어떻게 들어올지 예측하기 어려움
- 제약사항을 지키기 위한 것을 소스코드 상에서 일일이 확인하기 매우 고됨
=> 사용자의 입력을 검증하는 부분이 Validation으로 구현함.
1. Jakarta Bean Validation
= Java Bean Validation : 명세를 사용해서 사용자의 입력을 검증함
이 자체로 기능하지 않음 명세를 제공하기 위해 존재
1) JPA와 Hibernat Orm과의 관계와 비슷함
- jpa : entitiy가 db상에 어떤 부분을 의미하는지를 표현하는 일련의 명세
- bean validation도 같음 , 이걸 활용한 구현체도 hibernate validator.
검증할 데이터(Jakarta)가 있으면 검증한 대상(Hibernate)이 있다
2. Validation Annotation
0. 개요
제약사항들을 직접 정의, 어디에 붙이고 처리 할 지 직접 구현 할수 있게 만든 부분도 있음.
미리 만들어진 annotation 활용하는 방법을 배울 것임
- @Null, @NotNull
- @Size
- @NotEmpty, @NotBlank
[기본 설정]
build.gradle에 dependency 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
1. 실습
- 멤버변수 상에 annotation 붙이기
- @Valid : 정상적으로 작동하는지 검증
- @Vaild 넣어준 후 postman
2. Validation Annotation
- Null 여부 : @Null, @NotNull
- String 혹은 Collection(list, set)의 크기 :@Size
3. notnull과 notempty, notblank의 차이
1) VaildTestDto 생성
@NotNull : 변수가 null이기만 해도 검증에 실패함. not null이어야 됨
@NotEmpty : empty한 string은 ""-> null은 아닌데 내용물이 없음. 객체는 생성됐는데 담겨져있는 char sequence가 존재하지 않음 / 기술적으로 NotNull먼저하고 NotEmpty : null이 아니면서 Object.size()>0
@NotBlank : 공백이 아닌 문자열 " " 도 검증 실패, list같은 열거형 collection에 사용x
2) 검증
PostController에 @PostMapping 추가
'SpringBoot' 카테고리의 다른 글
Interceptors & Filters (0) | 2022.03.24 |
---|---|
Exception Handling - 강의 정리 (0) | 2022.03.24 |
Spring AOP -강의정리 (0) | 2022.03.22 |
Logging -강의 (0) | 2022.03.22 |
Spring Boot Properties - 강의 정리 (0) | 2022.03.22 |