동작 순서
- 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회
- 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회
- 핸들러 어댑터 실행 : 핸들러 어댑터를 실행
- 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행
- ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환 후 반환
- viewResolver 호출 : 뷰 리졸버를 찾고 실행
- View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환
- View 렌더링 : 뷰를 통해서 뷰를 렌더링 함
핸들러(컨트롤러) 조회
- HandlerMapping
- 핸들러 매핑에서 이 컨트롤러를 찾을 수 있어야 함
- ex : 스프링 빈의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑이 필요
- HandlerAdapter
- 핸들러 매핑을 통해서 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요
- ex : Controller 인터페이스를 실행할 수 있는 핸들러 어댑터를 찾고 실행
우선순위
- HandlerMapping
- RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
- BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾음
- HandlerAdapter
- RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
- HttpRequestHandlerAdapter : HttpRequestHandler 처리
- SimpleControllerHandlerAdapter : Contoller 인터페이스 처리(@Controller와 다름)
'Java > Spring MVC' 카테고리의 다른 글
BindingResult (0) | 2024.06.27 |
---|---|
Model과 @ModelAttribute (0) | 2024.06.08 |
@Controller와 @RestController (1) | 2024.06.06 |
@RequestBody와 @ResponseBody (0) | 2024.06.06 |
애노테이션(Annotation) (0) | 2024.05.23 |