Replies: 1 comment 1 reply
|
수고하셨습니당 ~~ |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
스프링 MVC - 구조 이해
1️⃣스프링 MVC 전체 구조
➡️앞서 만든 MVC 프레임 구조
➡️스프링MVC 구조
✅직접 만든 프레임워크 스프링 MVC 비교
✅Dispatcher Servlet 구조 살펴보기
org.springframework.web.servlet.DispatcherServlet앞서 직접 만들어본 MVC에서 쓰이는 Front Controller 패턴으로 구현되어 있다.
➡️Dispatcher Servlet 서블릿 등록
DispatcherServlet도 Front Controller와 마찬가지로 HttpServlet을 상속하고 있다. 또한 서블릿으로 동작한다.➡️요청 흐름
HttpServlet이 제공하는service()가 호출된다.FramewordServlet.service() 를 시작으로 여러 메서드가 호출되면서
DispatcherServlet.doDispatch()가 호출된다.DispatcherServlet.doDispatch()핵심 코드 분석➡️동작 흐름
InternalResourceViewResolver가 자동 등록되고, 사용된다.2️⃣핸들러 매핑과 핸들러 어댑터
✅Controller 인터페이스
org.springframework.web.servlet.mvc.ControllerHandlerMapping
HandlerAdapter
핸들러 매핑도, 핸들러 어댑터도 모두 순서대로 찾고 만약 없으면 다음 순서로 넘어간다.
1. 핸들러 매핑으로 핸들러 조회
HandlerMapping을 순서대로 실행해서, 핸들러를 찾는다.
이 경우 빈 이름으로 핸들러를 찾아야 하기 때문에 이름 그대로 빈 이름으로 핸들러를 찾아주는BeanNameUrlHandlerMapping 가 실행에 성공하고 핸들러인 OldController 를 반환한다.
핸들러 어뎁터 조회
핸들러 어댑터 실행
✅정리 - OldController 핸들러매핑, 어댑터
➡️HttpRequestHandler
1. 핸들러 매핑으로 핸들러 조회
HandlerMapping 을 순서대로 실행해서, 핸들러를 찾는다.
이 경우 빈 이름으로 핸들러를 찾아야 하기 때문에 이름 그대로 빈 이름으로 핸들러를 찾아주는BeanNameUrlHandlerMapping 가 실행에 성공하고 핸들러인 MyHttpRequestHandler 를 반환한다.
핸들러 어댑터 조회
핸들러 어댑터 실행
✅정리 - MyHttpRequestHandler 핸들러매핑, 어댑터
3️⃣뷰 리졸버
new ModelAndView("new-form");추가 한다.Whitelabel Error Page가 나온다.스프링 부트의 경우 InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록하는데, 이때 위에 application.properties안에 등록한 코드 정보를 사용해서 등록한다.
✅ 스프링 부트가 자동 등록하는 뷰 리졸버
핵심적인 부분만 원래는 더 많다.
4️⃣스프링 MVC - 시작하기
➡️코드 설명
따라서 위의 코드와 아래의 코드는 같은 거라고 생각하면된다.
5️⃣스프링 MVC - 컨트롤러 통합
@RequestMapping의 쓰이는 위치는결론 → 컨트롤러 클래스를 유연하게 하나로 통합이 가능
SpringMemberControllerV2
✅조합 결과
6️⃣스프링 MVC - 실용적인 방식
이 전에 MVC를 손수 제작했을 때 V3는 ModelView를 직접 생성해서 반환했다 그것은 불편한 점이 많다.
그럼 스프링 MVC를 사용해서 V3를 제작하면 어떤 모습일지 확인해보자.
지금 이 방식은 실무에서 많이 쓰는 방식이다.
All reactions