package hello.typeconverter.converter; import hello.typeconverter.type.IpPort; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; public class ConverterTest { @Test void stringToInterger(){ StringToIntegerConverter converter = new StringToIntegerConverter(); Integer result = converter.convert("10"); Assertions.assertThat(result).isEqualTo(10); } @Test void IntegerToString..
@ControllerAdvice @ControllerAdvice 는 대상으로 지정한 여러 컨트롤러에 @ExceptionHandler , @InitBinder 기능을 부여해주는 역할을 한다. @ControllerAdvice 에 대상을 지정하지 않으면 모든 컨트롤러에 적용된다. (글로벌 적용) @RestControllerAdvice 는 @ControllerAdvice 와 같고, @ResponseBody 가 추가되어 있다. @Controller , @RestController 의 차이와 같다. 이전 글에서는 특정 컨트롤러에서 @ExceptionHandler 어노테이션으로 예외를 처리를 했을 경우에 해당 컨트롤러의 안의 맵핑 된 주소가 있을 경우에만 예외처리가 되었다. 하지만 @ControllerAdvice 또..
@ExceptionHandler 스프링은 API 예외 처리 문제를 해결하기 위해 @ExceptionHandler 라는 애노테이션을 사용하는 매우 편리한 예외 처리 기능을 제공하는데, 이것이 바로 ExceptionHandlerExceptionResolver 이다. 스프링은 ExceptionHandlerExceptionResolver 를 기본으로 제공하고, 기본으로 제공하는 ExceptionResolver 중에 우선순위도 가장 높다. 실무에서 API 예외 처리는 대부분 이 기능을 사용한다 컨트롤러에서 오류가 터지면 먼저 디스패처에 다시 간다음 ExceptionHandler가 호출 된다. 그 중 가장 먼저 호출되는 것은 ExceptionHandlerExceptionResolver이다. /* * Copyrigh..
만약 localhost:8090/api/response-handler-ex?data=111 라는 url에서 data가 Interger 라면 localhost:8090/api/response-handler-ex?data=qqq 라고 넣으면 typeMissMatch 오류가 날 것이다. 그럼 서버에서 오류가 나기 때문에 원래는 500이 나야하지만, 사용자가 잘못 넣은 값이기 때문에 400으로 처리하는 것이 맞을 것이다. 하지만 부트는 타입미스매치를 자동으로 400으로 처리해 준다. 아래의 디폴트핸들러익셉션리졸버가 그것을 가능하게 해준다 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompil..
만약 localhost:8090/api/response-handler-ex?data=111 라는 url에서 data가 Interger 라면 localhost:8090/api/response-handler-ex?data=qqq 라고 넣으면 typeMissMatch 오류가 날 것이다. 그럼 서버에서 오류가 나기 때문에 원래는 500이 나야하지만, 사용자가 잘못 넣은 값이기 때문에 400으로 처리하는 것이 맞을 것이다. 하지만 부트는 타입미스매치를 자동으로 400으로 처리해 준다. 아래의 디폴트핸들러익셉션리졸버가 그것을 가능하게 해준다 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompil..
API 예외 처리 - 스프링이 제공하는 ExceptionResolver1 스프링 부트가 기본으로 제공하는 ExceptionResolver 는 다음과 같다. HandlerExceptionResolverComposite 에 다음 순서로 등록 1. ExceptionHandlerExceptionResolver 2. ResponseStatusExceptionResolver 3. DefaultHandlerExceptionResolver 우선 순위가 가장 낮다. ExceptionHandlerExceptionResolver -@ExceptionHandler 을 처리한다. API 예외 처리는 대부분 이 기능으로 해결한다. 조금 뒤에 자세히 설명한다. ResponseStatusExceptionResolver -HTTP 상..
package hello.exception.resolver; import com.fasterxml.jackson.databind.ObjectMapper; import hello.exception.exception.UserException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import java.io...
고객사 마다 다른 오류를 주고 싶을 때도 있다. 사실 api의 경우 오류가 터지면 이게 400이든 500이든 무조건 500으로 발생시켜 오류를 반환해준다. 오류 상태를 바꾸고 싶다면 HandlerExceptionResolver를 이용해준다. package hello.exception.resolver; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.se..
- Total
- Today
- Yesterday
- rejectValue
- 항해99
- Intercepter
- 인터셉터
- jpa api
- JPA
- BindingResult
- reject
- 예외처리
- hypertexttransferprotocol
- 향해플러스
- 항해플러스
- react실행
- 스프링부트
- SpringBoot
- ArgumentResolver
- Java
- 스프링공부
- 리터럴
- 백엔드 개발자 공부
- 로그인
- thymleaf
- filter
- exception
- 향해플러스백엔드
- 백엔드 개발자 역량
- 향해99
- 컨트
- React
- HTTP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |