빅데이터 AI 인공지능 IT 꿀팁 아이팁
Spring : HandlerMapping 본문
HandlerMapping
웹 요청이 들어올 경우 Dispatcher-Servlet 객체가 요청을 어떤 컨트롤러에게 위임할 것인지를
결정해야 하는데 그 요청과 해당 요청을 처리하는 컨트롤러의 매핑을 담당하는 인터페이스입니다.
Request 와 Handler 객체 간의 매핑을 정의합니다.
프레임워크에 기본 HandlerMapping 은
- BeanNameUrlHandlerMapping
- RequestMappingHandlerMapping
클래스 입니다.
Handler 는 항상 HandlerExecutionChain 인스턴스에 포함되어 실행합니다.
HandlerMapping 구현체
- HandlerMapping은 DispatcherServlet에 의해 초기화된다.
- HandlerMapping은 항상 HandlerExecutionChain을 통해 실행된다.
- HandlerExecutionChain은 AbstractHandlerMapping 클래스에 의해 생성된다.
- 기본 HandlerMapping 구현체인 BeanNameUrlHandlerMapping은 AbstractUrlHandlerMapping을 상속한다.
- 기본 HandlerMapping 구현체인 RequestMappingHandlerMapping 은 AbstractHandlerMethodMapping을 상속한다.
HandlerMapping 구현 클래스
1) SimpleUrlHandlerMapping : 패턴과 컨트롤러 이름을 비교하여, URL 이 패턴에 매칭될 경우 지정 컨트롤러 사용
2) BeanNameUrlHandlerMapping(default) : URL 과 일치하는 bean 이름의 컨트롤러 사용
3) ControllerClassNameHandlerMapping : URL 과 매칭되는 클래스 이름을 갖는 빈을 컨트롤러 사용
4) DefaultAnnotationHandlerMapping : @RequestMapping 어노테이션을 이용 컨트롤러 사용
참고) web.xml에 <url-pattern> 을 '/path/*' 같이 설정을 할 경우 전체 경로를 다 사용하고 싶으면 HandlerMapping
설정시 <property name="alwaysUseFullPath" value="true" /> 를 넣어서 설정을 잡는다.
참고2) 복수개의 HandlerMapping 구현시 property 로 order 를 넣어서 순서를 정해줄 수도 있다.