[Spring] MVC Pattern, Spring MVC, Spring Boot

Gavin Ariel Lee·2021년 8월 30일
0

MVC 패턴


소프트웨어 디자인 패턴 중 하나
Model, View, Controller의 약자로 하나의 애플리케이션, 프로젝트를 구성할 때 요소를 세가지의 역할로 구분한 패턴

  • Model
    애플리케이션의 정보/데이터를 나타내며 정보/데이터 가공을 책임지는 컴포넌트

  • View
    사용자 인터페이스 요소(사용자가 볼 수 있는 화면)
    데이터 및 객체의 입력, 출력을 담당

  • Controller
    데이터와 비즈니스 로직 사이의 상호 동작을 관리(Model과 View통제)
    프로그램의 작동 순서, 방식을 제어

MVC1

  • JSP로 구현한 기존 웹 어플리케이션은 MVC 모델 1 구조
  • JSP가 Controller, View 기능을 모두 담당
  • Model은 jdbc 인터페이스로 DB 조작하면서 class를 정의
  • JSP에 비지니스 로직을 처리하기 위한 코드(Java)와 웹 브라우저에 결과를 보여주기 위한 출력 관리 코드(HTML)가 섞임

설계가 간단하여 작은 프로젝트에 적합하며 개발 속도가 빠른 대신 코드가 복잡해져 유지 보수가 어렵다.

MVC2

  • 클라이언트의 요청, 응답, 비니지스 로직 처리 부분을 모듈화 시킨 구조
  • Controller는 요청에 대한 로직 처리를 model로 보내고 Model은 결과를 View로 보내 응답
  • 클라이언트 요청을 Servlet이 받음(Controller)
  • View는 JSP로 구성(JSTL을 사용해 결과 표현)

비교적 큰 프로젝트에 적합하고 설계 단계에서 비용이 많이 들어 개발 속도가 느린 단점이 있지만 확장에 용이하고 유지보수가 수월

Spring MVC


MVC2의 발전된 형태
1. 클라이언트의 요청을 FrontController인 DispatcherServlet이 받는다.
2. HanlderMapping을 통해 요청에 해당하는 Controller를 실행한다.
3. Controller는 적절한 서비스 객체 호출
4. Service는 DB 처리를 위해 DAO를 이용하여 데이터 요청
5. DAO는 mybatis를 이용하는 Mapper를 통해 작업 처리
6. 처리된 결과가 Controller로 전달
7. View Resolver를 통해 결과를 받을 View를 찾아서 전달
8. View는 전달 받은 결과를 다시 DispatcherServlet에게 전달
9. DispatcherServlet은 클라이언트에게 전달

Spring Boot

  • SpringMVC 사용 시 Component Scan, DispatcherServelt, View Resolver, jar등 복잡한 설정을 간단하게 만들어 준 것
  • 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 한다.
  • Spring Boot Starter Dependency만 추가해주면 바로 API를 정의하고 내장된 톰캣이나 제티로 웹 애플리케이션 서버를 실행할 수 있음
  • Embed Tomcat을 사용 : Tomcat 별도 설치, 버전 관리 수고 X
  • starter을 통한 dependency 자동화 : 과거에는 각 dependency들의 호환되는 버전을 직접 맞추고 관리했어야했으나 이제는 start가 대부분의 dependency를 관리
  • XML 설정 X
  • jar file을 이용해 자바 옵션만으로 손쉽게 배포 가능

starter란?
특정 목적을 달성하기 위한 의존성 그룹.
starter는 npm처럼 간편하게 dependency를 제공
예를 들어 JPA가 필요하다면 prom.xml(메이븐)이나 build.gradle(그레이들)에 'spring-boot-starter-data-jpa'만 추가해주면 spring boot가 그에 필요한 라이브러리들을 알아서 받아온다.

spring-boot-starter-* // starter 명명 규칙
profile
As you wish

0개의 댓글