Spring WebFlux HandlerMethodArgumentResolver

오늘은 Spring WebFlux의 HandlerMethodArgumentResolver에 대해서 알아보도록 하자. 사실 WebFlux 이전에 WebMvc에도 동일한 기능이 존재한다. 인터페이스명까지 동일하니 거부감은 사실 없다. 기존의 mvc의 기능과 동일은 하나 WebFlux API에 맞춰진 형태라 생각하면 된다. 어떤 기능인지는 여기를 참고해도 되고 다른 블로그 혹은 문서를 살펴봐도 좋다. WebMvc 클래스는 org.springframework.web.method.support.HandlerMethodArgumentResolver와 같고 WebFlux의 클래스는 org.springframework.web.reactive.result.method.HandlerMethodArgumentResolver 이와 같다. HandlerMethodArgumentResolverSupport 위의 내용을 알아보기 전에 WebMvc에는 존재 하지 않지만 WebFlux에 존재하는 클래스인 HandlerMethodArgumentResolverSupport 를 살펴보자. HandlerMethodArgumentResolverSupport 에는 protected 메서드가 3개.. Read More

Testcontainers 로 integration 테스트하기

오늘 이야기 할 내용은 Testcontainers라이브러리로 integration 테스트를 해보도록 하자. Testcontainers는 java 라이브러리로 (다른 언어도 존재는 함) 데이터베이스, 메시지 큐 또는 웹 서버와 같은 의존성이 있는 모듈에서 테스트 할 수 있게 도와주는 도구이다. 기본적으로는 docker 컨테이너 기반으로 동작하기에 docker가 설치는 되어 있어야 한다. 만약 docker가 설치 되어 있지 않다면 docker를 설치 해야 된다. 내부적으로는 도커의 이미지를 땡겨와 실행하기 때문이다. Testcontainers 다양한 테스트 프레임워크를 지원한다. junit4 부터 junit5, Spock등 java 진영에서 주로.. Read More

HandlerMapping 와 HandlerAdapter

오늘 이야기할 내용은 spring의 HandlerMapping, HandlerAdapter 인터페이스에 대해 알아보도록 하자. spring web, webflux 비슷한 아키텍처로 동작하기 때문에 예제는 그냥 web으로 설명하도록 하겠다. 먼저 이글을 읽고 오는 것을 추천하지만 굳이 보지 않아도 된다. HandlerMapping 이 인터페이스는 해당 요청 정보를 기준으로 어떤 컨트롤러를 사용할 것 인가를 결정하는 인터페이스이다. 간단히 말해서 해당 url로 해당 컨트롤러(핸들러)를 선택하는 기준이 되는 인터페이스이다. HandlerMapping 인터페이스는 여러 구현체를 가지고 있는데 한개씩 살펴보도록 하자. BeanNameUrlHandlerMapping 이 구현체는 클래스명 그대로.. Read More