Spring의 흐름

개ant미·2024년 2월 9일
0

Spring

목록 보기
1/7

처음 스프링을 접하는 당신! Spring은 유지보수가 쉬우며, 확장가능성이 유리하기 때문에 많은 영역에서 사용 중이다. 하지만 스프링의 동작하는 흐름을알지 못한다면, 이 블로그를 보는 것이 도움이 될것이다!


MVC란 무엇인가?

먼저 Spring MVC의 흐름을 알기 위해서는 MVC 가 무엇인지 알아야 한다. MVC는 디자인 패턴의 하나이며 Model, View, Controller의 약자이다. 프로젝트의 구성을 3가지의 역할로 구분한 패턴이다.

Model

데이터와 비즈니스 로직을 관리

  • 앱이 포함해야할 데이터가 무엇인지 정의

View

레이아웃과 화면을 처리

  • 앱의 데이터를 보여주는 방식을 정의

Controller

모델과 뷰로 명령을 전달

  • 앱의 사용자로부터 입력에 대한 응답

MVC 흐름

MVC 는 서로 내부적으로 상호 작용하여 작동한다.


Spring의 단계별 구성 요소

스프링의 내부적 흐름을 알기 위해서는 아래의 6개의 단어의 역할 과 단계별로 어떠한 상호작용이 일어나는 지에 대한 이해가 있어야한다.

  • DispatcherServlet
  • Handler Mapper
  • Controller
  • HandlerAdapter
  • ViewResolver
  • View

DispatcherServlet

  • dispatch(보내다)+er+Servlet(클라이언트의 요청을 처리, 결과를 반환)
  • DispatcherServlet은 서버로 들어오는 모든 요청을 받아서 처리하고 공통처리 작업을 처리
  • 작업을 적절한 세부 Controller에게 처리하도록 하고 예외 발생 시 일괄적인 방식으로 에러를 처리해주는 Front Controller

    Front Controller란?

    주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴.

Handler Mapper

  • 받은 요청이 어떤 컨트롤러(핸들러)가 처리하는지 결정.
  • 특정 요청 경로를 처리해주는 Hanlder를 찾아주는 객체
    ( ex. @Controller)

HandlerAdapter

  • 컨트롤러(핸들러)가 처리한 결과값을 받아서 MAV(ModelAndView) 형태로 바꿔 DispatcherServlet에 전달.
  • 어떤 형태의 객체로 결과 값을 받던지 간에 상관 없이 웹요청 처리 가능
    @Controller
    public Class Controller{
    	public String exAdapter(Model model){
        	model.addAttribute("greeting", "안녕하세요");
            return "hello";
        }
    }
hello라는 String값을 반환해도 HandlerAdapter에서 ModelAndView형태로 변환시켜서 값을 전달

Controller

  • 클라이언트의 요청을 처리한 뒤 Model 호출
  • MAV(Model And View) 형삭으로 반환

ViewResolver

  • Controller가 리턴한 View 이름으로 실행될 JSP 경로 완성

View

  • 응답화면 생성

Spring은 DispatcherServlet, HandlerMapping, ViewResolver는 Spring이 내부적으로 해준다. 따라서 DispatcherServlet, HandlerMapping, VIewResolver는 setting만 하고 Controller 와 View만 만들면 된다!

2개만 하면된다꼬?

Spring MVC 내부적 흐름 전개도

  1. 고객(브라우저)이 HTTP 요청을 URL로 보내면, Spring MVC의 DispatcherServlet이 요청을 받는다.

  2. DispatcherServletHandlerMapper를 통해서 HTTP요청을 처리할 Controller 를 찾는다.

  3. HandlerMapper는 받은 요청의 URL를 처리할 Controller 를 선택하고, 선택된 Controller 와 세부사항을 DispatcherServlet에게 반환한다.

  4. 현재 DispatcherServlet는 요청을 처리할 Controller 를 사용할지 알고 있으므로, DispatcherServlet는 해당 Controller 로 요청을 전달한다.

  5. 이제 Controller 는 요청과 유효성을 처리하여 model 데이터를 만든다. 마지막으로 Controller 는 MAV(응용프로그램에 표시되는 이름의 model&view)를 DispatcherServlet에 반환한다.

  6. DispatcherServlet는 application에 logical view 와 physical view를 해결하기 위해서 ViewResolver에 전달한다

  7. ViewResolver는 logical view와 phsical view를 연결시키고 actureal view를 DispatcherServlet에게 반환한다.

  8. DispatcherServlet는 view와 model을 View에게 전달한다.

  9. View는 view, model,form을 병합하여 HTML로 결과를 형성하여 DispatcherServlet로 반환한다.

  10. 그 결과 DispatcherServlet는 HTML 결과를 형성하여 고객(브라우저)에게 렌더링을 위한 응답으로 다시 반환한다


마무리

블로그를 보면서 알았던 것을 체크 하세요

  • MVC의 의미
  • Spring의 단계별 구성요소
  • Spring의 flow를 설명할 수 있다.
profile
지식을 채워가는 습관 만들기

0개의 댓글