티스토리 뷰
HandlerAdapter
이 인터페이스는 HandlerMapping에서 결정된 핸들러 정보로 해당 메서드를 직접 호출해 주는 스펙이다. 이 역시 여러개의 구현체가 존재한다. 한개씩 알아보도록 하자.
SimpleControllerHandlerAdapter
Controller 인터페이스를 사용하면 위의 어뎁터를 사용한다.
public class AccountController implements Controller
{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ///... return null; } }
위와 같이 Controller 인터페이스를 구현하면 SimpleControllerHandlerAdapter 통해 해당 메서드가 호출 된다.
HttpRequestHandlerAdapter
이것 역시 HttpRequestHandler 인터페이스를 사용하면 해당 어뎁터를 사용한다.
public class AccountController implements HttpRequestHandler
{ @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) { ///... } }
SimpleServletHandlerAdapter
클래스명 그대로 Servlet을 구현하면 된다. 아마도 기본적으로는 설정이 되어 있지 않다. 만약 사용을 원한다면 해당 어뎁터를 빈으로 등록해야 한다.
public class AccountController extends HttpServlet
{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { } }
RequestMappingHandlerAdapter
이것은 아마도 우리가 가장많이 쓰는 어뎁터이다. 실제로는 RequestMappingHandlerMapping 과 대응되는 클래스이다. 만약 RequestMappingHandlerMapping 매핑 전략을 사용하고 싶다면 해당 어뎁터를 이용해야 한다.
해당 어뎁터에선 어떤 메서드를 호출해야 할지 결정해야하므로 이 클래스엔 여러 정보들이 담겨서 있다. 왜냐하면 위의처럼 특정한 인터페이스를 구현한게 아니라 리플렉션을 이용해서 메서드를 호출해야 하므로 해당 파라미터 타입과 리턴타입들의 정보를 알아야 하기 때문에 해당 정보들을 파싱해줄 HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler 인터페이스가 존재한다. 이외에도 더 많은 정보들을 가지고 있지만 여기선 중요한게 아니므로 생략 하겠다.
@Controller @RequestMapping("/accounts") public class AccountController
{ @GetMapping("/{id}") public String hello(@PathVariable Long id) { //... } }
위의 클래스는 RequestMappingHandlerAdapter 통해 hello(Long) 이란 메서드가 호출된다.
- Total
- Today
- Yesterday
- docker
- prometheus
- 운동
- zipkin
- Logstash 활용
- 빅-오
- 오늘저녁 삼겹살
- Gateway
- elasticSearch
- config
- consumer
- 운동일기
- ACTUATOR
- springcloud
- Logstash to ElasticSearch
- MariaDB
- producer
- git
- rabbitmq
- github
- JWT
- MSA
- Feign
- UserService
- LoadBalancer
- 미래의나에게동기부여
- Kafka Connect
- Spring + ELK
- kafka
- 루틴기록
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |