유효성 검사 어떻게 해야하나요❓✨

YaR Lab·2024년 8월 5일
0

TIL✨

목록 보기
131/135
post-thumbnail

24.08.05

today 😉

[검증과 검사/검정의 차이가 뭘까❓]
검증은 증명하는 과정이고, 검사/검정은 확인하는 작업을 뜻한다. 유효성 검사는 검사인 만큼 데이터를 확인하는 작업을 말하는 것 같다.

[이미 가입된 id인지 확인하는 작업은 유효성 검사일까❓]
요청한 데이터가 어떤 조건에 충족하는지 확인하는 작업을 유효성 검사라고 한다. "id자체는 중복되면 안된다" 라는 조건이 있는데 이 조건을 검사하는 작업이기 때문에 유효성 검사라고 생각이 든다. 하지만 스프링에서 제공하는 유효성검사에서는 id중복 처리 작업이 있지는 않다.

  1. 전화번호나 이메일같이 형식을 검사하는 유효성검사는 클라이언트에서 우선적으로 유효성검사를 해야한다. 하지만 id 중복 검사를 하기 위해서는 User DB에 같은 id를 가지고 있는지를 검사해야 하고, 회원가입 비즈니스 로직 안에 들어가야 하는 로직이기 때문에 서비스계층에서 가지고 있어야 한다고 생각합니다.

[@Valid에 대해 알아보자❗️]
spring-boot-starter-validation 의존성을 추가해야 사용할 수 있다. @Email, @NotBlank, @NotNull 등의 어노테이션과 함께 사용 된다.
3) @Valid는 유효성 검사를 하는 곳에서.

[@Validated vs @Valid⁉️]
Controller단 이외에 유효성 검사를 사용 해 대상 그룹을 지정해줄 때 사용 된다.

[Validation이 없을 때는 어떻게 사용 됐을까❓]
Validator라는 유틸성 클래스를 정의해서 사용됐다고 한다.

[SME 라이브러리가 뭘까❓]
Validation 기능을 제공하지 않았을 때는 Validator라는 유틸성 클래스를 정의해서 사용했다고 한다. 유틸성 편의기능을 제공하는 라이브러리는 뭐가 있을까?

SME 라이브러리는 자바 표준 라이브러리를 확장하여 좀 더 편리한 기능을 제공하는 라이브러리를 칭한다. Apache commons, Google guava 등이 있다.

implementation `com.google.guava:guava`

Splitter.on("&").trimResults().withKeyValuesSeparator("=").split("name=songa&age=20")
// => { name=songa, age=20 }

[Erros와 BindingResult의 차이가 뭘까❓]
Spring Validator가 유효성을 검사하다가 오류가 발생하면, 오류가 난 특정 필드 or 객체를 Error(BindingResult)에 담아 준다.
Error

BindingResult는 Errors 인터페이스를 확장하여 구체적인 유효성 검사 결과를 다루는 데 특화되어 있다.

AbstractBindingResult에 errors에 담겨서 사용 된다.

ex) Service단에서 Map으로 정리해서 넘겨줌 (클라이언트의 편리를 위해서)

getFieldErrors

getField();
getDefaultMessage();

0개의 댓글