본문 바로가기

Spring Boot

[Spring] Handler와 Controller의 관계

Interceptor

인터셉터의 preHandle과 postHandle을 공부하다가 이런 의문이 들었다.

왜 이름이 pre'Handle'이지? Controller 전후로 있으니까 pre'Controller' 라고 해야하지 않나?🤔

이런 의문을 해소하고, 용어의 혼동을 없애기 위해 Handler와 Controller의 차이를 정리하고자 한다.


Handler와 Controller의 관계

개념적으로 핸들러의 넓은 의미를 무언가를 다루는 것입니다.
Spring MVC에서 컨트롤러의 경우 웹요청을 다루기 때문에 핸들러에 포함된다고 볼 수 있습니다.
그러나 모든 핸들러가 (웹 요청을 다루는) 컨트롤러인 것은 아닙니다.
예를 들어, Message를 다루는 MessageHandler가 있다면 이 핸들러는 컨트롤러가 아니지만 (메시지를 다루는) 핸들러입니다.

- Handler와 Controller의 정확한 차이가 뭔가요? - 인프런 | 질문 & 답변 (inflearn.com)
스프링 MVC는 웹 요청을 실제로 처리하는 객체를 핸들러(Handler)라고 표현하고 있으며, 
@Controller 적용 객체나 Controller 인터페이스를 구현한 객체 모두 스프링 MVC입장에서는 핸들러가 된다.

- Controller(컨트롤러)와 (Handler)핸들러 - 사좋배 공유 (tistory.com) -
컨트롤러는 일종의 핸들러인 셈이고 
핸들러는 스프링 MVC에서 웹 요청을 처리하는 객체를 가장 큰 범위에서 부르는 용어
라는걸 알게 되었습니다.

- [Hong]Spring에서 Handler (velog.io)

 

정리하자면, Spring MVC에서 핸들러는 무언가를 처리하는 것을 가리키는 용어이고,
컨트롤러는 웹의 요청을 처리하기 때문에 핸들러의 일종이므로
인터셉터의 preHandle() 과 postHandle()이 컨트롤러와 연결되어있어도 이상하지 않은 것이다.