[Spring Boot] Validation

spring

Validation #

ex) 단순한 예시 코드

public void run(String account, String pw, int age) {
    if (account == null || pw == null) {
        return;
    }

    if (age == 0) {
        return
    }
    // logics
}
  1. 검증해야할 값이 많은경우 코드의 길이가 길어진다
  2. 구현에 따라서 달라질 수 있지만 service logic과의 분리가 필요
  3. 흩어져있는 경우 어디에서 검증하는지 알기 어려우며, 재사용의 한계가 있음
  4. 구현에 따라 달라질 수 있지만, 검증 logic이 변경되는 경우 테스트코드 등 참조하는 클래스에서 logic이 변경되어야 하는 부분이 발생할 수 있음.

Annotation #

Custom Validation #

  1. AssertTrue / False 와 같은 method 지정을 통하여 Custom Logic 적용 가능
  2. ConstraintValiator를 적용하여 재사용이 가능한 Custom Logic 적용 가능

Spring Boot Exception #

Exception 처리 #

Web Application의 입장에서 바라보았을때, 에러가 났을때 내려줄 수 있는 방법은 많지 않음.

  1. 에러페이지
  2. 4XX error or 5XX error
  3. Client가 200외에 처리를 하지 못할때는 200을 내려주고 별도의 에러 메세지 전달

Filter #

Filter란, Web Application에서 관리되는 영역으로써, Spring Boot Framework에서 클라이언트로부터 오는 요청/응답에 대해서 최초/최종 단계 위치에 존재하며, 이를 통하여 요청/응답의 정보를 변경하거나, Spring에 의해서 데이터가 변환되기 전의 순수한 Client의 요청/응답 값을 확인할 수 있다.

유일하게 SerletRequest, ServletResponse의 객체를 변환할수 있다.

Interceptor #