스프링 MVC 전체 구조#

DispatcherServlet#
스프링 MVC의 프론트 컨트롤러가 **DispatcherServlet**이다.
- 부모 클래스에서
HttpServlet을 상속받아서 사용하고, 서블릿으로 동작 - 스프링은
DispatcherServlet을 서블릿으로 자동등록하며, 모들 경로에 대해서 매핑
요청 흐름
- 서블릿이 호출되면,
HttpServlet의service()가 호출됨 - 스프링은
DispatcherServlet의 부모인FrameworkServlet.service()가 오버라이딩 되있음 FrameworkServlet.service()를 시작으로, 여러 메서드가 호출되며DispatcherServlet.doDispatch()가 호출
MVC 시작#
현재 스프링 컨트롤러는 99,9% 어노테이션 기반으로 동작
@RequestMapping
RequestMappingHandlerMapping핸들러 매핑RequestMappingHandlerAdapter핸들러 어뎁터
기본 설명
@Controller:- 스프링이 자동으로 스프링 빈으로 등록 (내부에
@Component가 있어서 컴포넌트 스캔의 대상) - 스프링 MVC에서 어노테이션 기반 컨트롤러로 인식
- 스프링이 자동으로 스프링 빈으로 등록 (내부에
@RequestMapping:요청 정보를 매핑, 해당 URL이 호출되면 이 메서드 호출됨ModelAndView: 모델과 뷰 정보를 담아서 반환
컨트롤러 통합#
클래스 레벨 @RequestMapping 과 메소드 레벨 @RequestMapping 을 조합해서, 하나의 컨트롤러로 사용
(클래스레벨+메소드레벨)
실용적인 패턴#
처음에는 @RequestMapping과 RequestMethod.[method]를 통해서 메소드 제약
후에는 @GetMapping,@PostMapping을 통해 메소드 제약