목록BE (354)
오봉이와 함께하는 개발 블로그
타입 컨버터 - Converter 타입 컨버터를 사용하려면 org.springframework.core.convert.converter.Converter인터페이스를 구현하면 된다. 컨버터 인터페이스 package org.springframework.core.convert.converter; public interface Converter { T convert(S source); } S : 변수의 원래 자료형 T : 변수를 바꿀 자료형 StringToIntegerConverter - 문자를 숫자로 변환하는 타입 컨버터 먼저 가장 단순한 형태인 문자를 숫자로 바꾸는 타입 컨버터를 만들어보자. @Slf4j public class StringToIntegerConverter implements Converter..
스프링 타입 컨버터 소개 문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것 처럼 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많다. HelloController - 문자 타입을 숫자 타입으로 변경 @RestController public class HelloController { @GetMapping("/hello-v1") public String helloV1(HttpServletRequest request) { String data = request.getParameter("data"); // 문자 타입 조회 Integer intValue = Integer.valueOf(data); // 숫자 타입으로 변경 System.out.println("intValue" + ..
API 예외 처리 - @ControllerAdvice @ExceptionHandler를 사용해서 예외를 깔끔하게 처리할 수 있게 되었지만, 정상 코드와 예외 처리 코드가 하나의 컨트롤러에 섞여 있다. @ControllerAdvice 또는 @RestControllerAdvice를 사용하면 둘을 분리할 수 있다. 먼저 ApiExceptionV2Controller코드에 있는 @ExceptionHandler모두 제거 ExControllerAdvice @Slf4j @RestControllerAdvice public class ExControllerAdvice { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalArgumentException.cl..
API 예외 처리 - @ExceptionHandler HTML 화면 오류 vs API 오류 웹 브라우저에 HTML 화면을 제공할 때는 오류가 발생하면 BasicErrorController(에러 코드에 따라 자동으로 웹 페이지 띄워주는 클래스)를 사용하는게 편하다. 이때는 단순히 5xx, 4xx 관련된 오류 화면을 보여주면 된다. BasicErrorController는 이런 메커니즘을 모두 구현해두었다. 그런데 API는 각 시스템 마다 응답의 모양도 다르고, 스펙도 모두 다르다. 예외 상황에 단순히 오류 화면을 보여주는 것이 아니라, 예외에 따라서 각각 다른 데이터를 출력해야 할 수도 있다. 그리고 같은 예외라고 해도 어떤 컨트롤러에서 발생했는가에 따라서 다른 예외 응답을 내려주어야 할 수 있다. HTML..
API 예외 처리 - 스프링이 제공하는 ExceptionResolver 2 DefaultHandlerExceptionResolver를 살펴보자. DefaultHandlerExceptionResolver는 스프링 내부에서 터진 오류를 HTTP 스펙에 맞는 상태 코드로 바꿔서 오류를 처리해준다. DefaultHandlerExceptionResolver는 스프링 내부에서 발생하는 스프링 예외를 해결한다. 대표적으로 파라미터 바인딩 시점에 타입이 맞지 않으면 내부에서 TypeMismatchException이 발생하는데, 이 경우 예외가 발생했기 때문에 그냥 두면 서블릿 컨테이너까지 오류가 올라가고, 결과적으로 500 오류가 발생한다. 그런데 파라미터 바인딩은 대부분 클라이언트가 HTTP 요청 정보를 잘못 호출해..