컨트롤러가 호출되려면 다음과 같은 2가지가 필요하다.
HandlerMapping(핸들러 매핑)
핸들러 매핑에서 컨트롤러를 찾을 수 있어야한다.
HandlerAdapter(핸들러 어뎁터)
핸들러 매핑에서 찾은 핸들러를 실행할 수 있는 핸들러 어뎁터가 필요하다.
0 = RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다.
0 = RequestMappingHandlerAdapter : @RequestMapping 에서 사용
1 = HttpRequestHandlerAdapter : HttpRequestHandler 처리
2 = SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션 X)
핸들러 매핑도, 핸들러 어댑터도 모두 순서대로 찾고 만약 없으면 다음 순서로 넘어간다.
1.핸들러 매핑으로 핸들러 조회
2.핸들러 어뎁터 조회
supports()
를 호출하여, 해당 핸들러를 처리할 수 있는 어뎁터를 찾는다.3.핸들러 어뎁터 실행