SpringBoot

Validation - 강의정리

요는 2022. 3. 22. 13:27

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 생성

getter, setter, toString 만들기

@NotNull : 변수가 null이기만 해도 검증에 실패함. not null이어야 됨
@NotEmpty : empty한 string은 ""-> null은 아닌데 내용물이 없음. 객체는 생성됐는데 담겨져있는 char sequence가 존재하지 않음 / 기술적으로 NotNull먼저하고 NotEmpty : null이 아니면서 Object.size()>0
@NotBlank : 공백이 아닌 문자열 "    " 도 검증 실패, list같은 열거형 collection에 사용x

 

2) 검증

PostController

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