JAVA/Spring

Spring MVC 구조

호두밥 2022. 1. 23. 18:55

1. MVC 패턴

MVC 패턴이란, Model - View - Controller로 이루어진 구조를 말합니다. 

애플리케이션(프로그램)을 데이터 영역, 비즈니스 영역, UI 영역으로 역할을 나누어 관리하는 것을 말합니다. 

모델(Model) 

  • 데이터를 관리하는 역할을 담당하는 객체입니다. 데이터를 담아서 화면에 전달하는 역할을 합니다.
  • 모델을 사용하면, 화면은 비즈니스 로직, 데이터 접근 방법을 몰라도 되기 때문에, 화면 구현에만 집중할 수 있습니다.   

뷰(View)

  • 화면을 렌더링하는, UI 영역을 담당하는 객체입니다. HTML 파일을 만들어 웹 브라우저에서 접근할 수 있도록 해줍니다. 

컨트롤러(Controller)

  • 비즈니스 영역을 담당하는 객체입니다. 요청을 받아 비즈니스 로직을 처리한 뒤, 결과를 모델에 담아줍니다.  

2. Spring MVC 구조와 동작 순서

DispatcherServlet : Handler 호출, View 찾기, View 렌더링 등 Spring MVC 패턴에서 처리흐름을 관리하는 객체입니다. 

  • Http 요청이 들어오면, 적절한 Handler(Contoller)를 찾아주는 역할을 합니다. 
  • View Resolver를 호출하여, 적절한 View를 반환받은 뒤, Handler(Controller) 결과인 ModelAndView를 보내 view를 렌더링합니다. (응답값을 보냅니다) 

HandlerMapping : 등록된 Handler(Controller)를 조회하는 기능을 합니다.

HandlerAdapter : Handler를 실행해주는 기능을 합니다. 

ModelAndView : 데이터 전달 객체

ViewResolver : View를 생성해주는 기능을 합니다. Config(설정) 정보를 참조해, Controller에서 호출된 경로의 View를 찾아 반환해줍니다. ( 설정정보에서 Prefix, Suffix 등의 값을 지정할 수 있습니다.)

View : 화면 UI

3. HandlerMapping과 HandlerAdapter

HandlerMapping

  • HandlerMapping 인터페이스는 클라이언트 요청을 처리할 수 있는 Handler(Controller)를 찾아주는 객체입니다.
  • HandlerMapping이 Handler를 찾는 방식은 2가지가 있습니다. 
    • RequestMappingHandlerMapping : 애노테이션 @RequestMapping을 이용합니다.
    • BeanNameUrlHandlerMapping : 스프링 빈의 이름을 이용합니다. 

HandlerAdapter

  • HandlerMapping을 이용해 찾은 핸들러를 실행해주는 객체입니다. 
  • DispatcherServlet이 찾은 핸들러를 실행할 수 있도록 도와주는 어답터 역할을 수행하는 객체로,  DispatcherServlet이 확장될 수 있도록 도와줍니다. (새로운 컨트롤러가 추가되더라도, DispatcherServlet이 컨트롤러 실행 로직을 추가하지 않도록 해줍니다.)
  • HandlerAdapter가 Adapter를 찾는 방식은 3가지가 있습니다. 
    • RequestMappingHandlerAdapter : 애노테이션 @RequestMapping을 이용합니다.
    • HttpRequestHandlerAdapter : HttpRequestHandler에서 처리합니다. 
    • SimpleControllerHandlerAdapter : Controller 인터페이스를 구현한 객체를 호출한 경우 사용합니다. 

 

참고자료

'JAVA > Spring' 카테고리의 다른 글

쓰레드로컬 Thread Local (데이터 경합 방지)  (0) 2023.07.08
@RequestMapping 과 @Controller  (0) 2022.01.26
스프링 빈과 의존성 주입 (DI)  (0) 2022.01.12