본문 바로가기

Dev-/Spring

스프링 핸들러 매핑(Handler Mapping)이란

많이 들어는 봤지만, 정확히 뭔지 알아본 적이 없어서 정리해본다.


dispatcherServlet으로 받은 요청을 Controller로 보내지는데,

그런 요청이 어떤 룰으로 컨트롤러에게 보내는지(매핑하는지), 그 방법을 정해주는 클래스가  바로 Handler다.



다시말해 http://localhost:8080/test라는 요청이 있고,

임의의 컨트롤러 HomeControllerd에서

@Controller
class HomeController {

@RequestMapping(value = "/test")
public String test() {
return "test";
}
}


위와같이 RequestMappirng으로 무의식적으로 url과 연결지어 준 게 그냥 된 것이 아니라

핸들러가 있어서 가능했던 것이다.




스프링에서 기본적으로 제공해주는 Handler Mapping 클래스는 4개가 있다.


- BeanNameUrlHandlerMapping

- ControllerClassNameHandlerMapping

- SimpleUrlHandlerMapping

- DefaultAnnotationHandlerMapping




이름을 보면 사용법이 대강 예측이 가는데, 첫 3개 클래스는 xml을 이용하면 된다.


마지막 DefaultAnnotationHandlerMapping이 일반적으로

<context:component-scan base-package="패키지경로" />

위처럼 패키지경로를 등록한 후, 해당 컨트롤러에 comp@Controller 어노테이션을 사용하는 방법인데




자세한 것은 필요할 때 찾아보면 될 것 같고,

무심코 사용하는 위 방법이 핸들러가 있어서 가능하다는 것만 알면 될 것 같다.




잘 기억은 나지 않지만, 입사 후 첫 프로젝트에서 핸들러를 사용해서 여러가지 필터 비슷한 작업을 해놨던 거 같던데,,

이름만 핸들러였는지 한번 알아봐야 할 것 같다.