-
[SpringMVC] SpringMVC 구조Programming/Spring MVC 2021. 3. 18. 23:27
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원
www.inflearn.com
이 게시글은 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 듣고 느낀점과 배운 것들을 다시 한 번 각색하여 정리한 것입니다.
SpringMVC의 구조
SpringMVC 구조 동작순서
1. 핸들러 매핑을 통해 요청한 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 스프링 부트에서는 가장 먼저 @RequestMapping을 활용한 애노테이션 기반의 컨트롤러를 찾아서 사용한다. @Controller는 @Component의 기능 뿐만 아니라 @RequestMapping 기능을 대신하기도 한다.
2. 핸들러를 실행할 수 있는 어댑터를 조회한다. 프론트 컨트롤러의 역할을 하는 DispatcherServlet은 핸들러 어댑터를 중간에 두어 다양한 형태의 핸들러(컨트롤러)를 처리할 수 있다 (어댑터 패턴). 이제 컨트롤러 뿐만 어댑터가 지원하기만 하면, 어떤 것이라도 URL에 매핑해서 사용할 수 있다. 그렇기 때문에 컨트롤러라는 이름보다는 더 범용적으로 사용할 수 있기 때문에 핸들러로 표현한다.
3. 조회한 핸들러 어댑터를 실행한다. HandlerAdapter는 인터페이스의 형태로 되어 있기 때문에 이것을 구현한 구현체들은 핸들러 어댑터 목록에 포함된다.
4. 핸들러 매핑을 통하여 조회된 핸들러의 어댑터를 활용하여 핸들러를 실행한다.
5. 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환하여 반환한다.
6. viewResolver를 찾아 실행한다. ViewResolver는 prefix와 suffix와 함께 빈으로 등록하여 사용할 수 있다. 스프링 부트를 사용하면 InternalResourceViewResolver를 자동으로 등록해주는데, application.properties에 물리경로인 prefix와 suffix를 설정 정보를 추가하여 사용할 수 있다. 만약 JSP가 아닌 Thyemleaf와 같이 다른 템플릿 엔진을 사용한다면 해당하는 ThymeleafViewResolver를 등록해줘야 한다. 최근에는 라이브러리만 추가해주면 스프링 부트가 해당 작업을 자동으로 처리해준다.
7. 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 랜더링을 위해 View 객체를 반환한다.
8. View를 통하여 뷰를 랜더링한다.
'Programming > Spring MVC' 카테고리의 다른 글
[SpringMVC] 인터셉터(interceptor) 적용 - session (2) 2021.04.22 [SpringMVC] ResponseEntity 적용 (2) 2021.04.16 [SpringMVC] 프론트 컨트롤러 패턴 (0) 2021.03.15 [SpringMVC] HTML, HTTP API, CSR, SSR (0) 2021.03.14 [SpringMVC] 멀티 쓰레드 (0) 2021.03.14