[Spring Boot] Spring MVC란?

안승섭·2022년 4월 14일
0

Spring Boot

목록 보기
2/3

Spring MVC란?

오늘은 Spring MVC에 대해 적어보려고 한다. Spring MVC란 Spring framework에서 사용하는 MVC패턴으로 아래의 구조를 가진다.

전체적인 흐름은 다음과 같다.

  1. Client로부터 요청이 들어오면 DispatcherServlet이 호출된다.
  2. DispatcherServlet은 받은 요청을 HandlerMapping에게 던져준다. 요청받은 URL을 분석하여 HandlerMapping 적합한 Controller를 선택하여 반환한다.
  3. DispatcherServlet이 Handler Adapter를 통해 HandlerMethod의 정보를 이용해 요청에 매핑되는 메소드를 실행한다.
  4. Controller는 Business Logic을 처리하고, 해당하는 결과를 View에 전달할 객체를 Model에 저장한다.
  5. Controller는 View name을 DispatcherServlet에게 리턴한다.
  6. DispatcherServlet은 ViewResolver를 호출하여 Controller가 리턴한 View name을 기반으로 적합한 View를 찾아준다.
  7. DispatcherServlet은 View 객체에 처리결과를 넘겨 최종 결과를 보여주도록 요청한다.
  8. View 객체는 해당하는 View를 호출하며, View는 Model 객체에서 화면 표시에 필요한 객체를 가져와 화면 표시를 처리하고 Client에게 넘겨준다.

필자는 요청이 들어오면 그에 응답하는 View가 아닌 JSON 객체를 응답하기에 @ResponseBody 어노테이션을 활용해 자바 객체인 Model을 JSON 형식으로 반환했다.

What we implements, Bean?

이런 Spring MVC 구조에서 개발자인 우리가 주로 관여하는 부분은 보라색으로 표시된 Controller, Service, Repository이다. 이전의 포스트에서 우리는 Spring은 DI를 IoC 컨테이너에게 위임하는 것을 알 수 있었다. 하지만 모든 객체가 IoC 컨테이너에 의해 관리되지 않는다. Bean이라는 특정 객체에만 의존성 주입이 적용되는데 Controller, Service, Repository가 바로 Bean 객체이다.

Bean scope

IoC 컨테이너 안에서 Bean이라는 객체의 생성부터 삭제까지 관리된다고 말했다. 여기서 Bean scope란 Bean 객체가 존재할 수 있는 범위를 뜻한다. Bean scope 기본설정은 싱글톤이다.

싱글톤은 IoC 컨테이너가 시작될 때 Bean도 단 하나만 생성되며 IoC 컨테이너가 종료될 때까지 단 하나의 Bean 객체만 존재하는 것을 보장한다.

다음으로 프로토타입이 있는데 이 경우 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는다. 그렇기에 요청이 오면 항상 새로운 인스턴스를 생성하여 반환하고 이후에 관리하지 않는다.

참고 - 예제로 배우는 스프링 입문

profile
Just Do It!

0개의 댓글