Spring

MVC / 구조 이해

Dear-J 2025. 4. 4. 02:27

스프링 MVC 구조

동작 순서

1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러 조회

2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터 조회

3. 핸들러 어댑터 실행

4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러 실행

5. ModelAndView 반환 : 핸들러 어댑터가 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환

6. viewResolver 호출 

7. View 반환 : 뷰의 논리 이름을 물리 이름으로 바꾸고 렌더링 역할을 담당하는 뷰 객체 반환

8. 뷰 렌더링

 

뷰 리졸버

InternalResourceViewResolver

스프링 부트는 위 이름의 뷰 리졸버를 자동으로 등록하고

>> application.properties에 등록한

>> spring.mvc.view.prefix, spring.mvc.view.suffix 설정 정보 사용해서 등록

 

동작 순서

1. 핸들러 어댑터 호출

>> 핸들러 어댑터를 통해 new-form이라는 논리 뷰 이름 획득

2. ViewResolver 호출

>> BeanNameViewResolver는 new-form이라는 이름의 스프링 빈으로 등록된 뷰 찾는데 없음

>> InternalResourceViewResolver 호출

3. InternalResourceViewResolver

>> InternalResourceView 반환

4. 뷰 - InternalResourceView

>> JSP처럼 forward()를 호출해서 처리할 수 있는 경우에 사용

5. view.render()

>> view.render()가 호출되고 InternalResourceView는 forward() 사용해서 JSP 실행

 

@RequestMapping

RequestMappingHandlerMapping, RequestMappingHandlerAdapter

 

@Controller

>> 스프링이 자동으로 스프링 빈으로 등록(내부에 @Component 애노테이션 있음)

>> 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식

@RequestMapping

>> 요청 정보 매핑, 해당 URL이 호출되면 이 메서드가 호출됨

>> 애노테이션을 기반으로 동작해서 메서드 이름 임의로 지음

ModelAndView : 모델과 뷰 정보를 담아 반환

 

컨트롤러 통합

메서드 단위의 @RequsetMapping을 클래스 단위로 유연하게 통합

 

실용적 방식

Model 파라미터

>> save(), members() 보면 Model 파라미터 사용

>> 스프링 MVC에서 이런 편의 기능 제공

 

ViewName 직접 반환

>> 뷰의 논리 이름을 반환 가능

 

@RequestParam 사용

>> 스프링은 HTTP 요청 파라미터를 @RequestParam으로 받기 가능

>> GET 쿼리 파라미터, POST Form 방식 모두 지원

 

@GetMapping, @PostMapping

>> @RequestMapping은 URL만 매칭하는 것이 아니라 HTTP Method도 함께 구분 가능

 

 

 

 

 

 

 

 

 

 

출처 : 김영한, 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

'Spring' 카테고리의 다른 글

MVC / 웹 페이지 만들기  (0) 2025.04.06
MVC / 기본 기능  (0) 2025.04.04
MVC / 프레임워크 만들기  (0) 2025.04.02
MVC / 서블릿, JSP, MVC 패턴  (0) 2025.04.02
MVC / 서블릿  (0) 2025.04.01