Spring : Spring MVC란?

2021. 9. 4. 01:44· Spring/MVC
목차
  1. MVC란?
  2. MVC 개요
  3. MVC의 의의
반응형

MVC란?

Spring MVC란 가장 많이 사용되고 있는 웹 아키텍처로, 스프링에서 웹 모듈 형태로 제공된다.

 

웹 개발 시 Model, View, Controller 단의 관심사를 분리함으로써 각각 독립적으로 개발될 수 있게 하여 각 구성요소 간의 의존성을 낮춘 것이 특징이며, 사용자 요청이라는 단일 진입점을 가진 웹 환경에서 사용되고 있는 아키텍처이다. 

* 관심사 분리:  관심사 분리는 컴퓨터 프로그램의 디자인 원칙으로, 분리시킬수 있는 부분을 분리시키는 원칙이다.

* 관심사 분리가 중요한 이유는 관심사 분리가 되지 않을 경우 프로그램 내부의 코드간 의존성이 너무 커져서 하나를 고치거나 기능을 추가할 때 의존성이 있는 부분을 모두 고쳐야 하는 상황이 생기기 때문이다.

 

 

MVC 개요

MVC 아키텍처를 채택한 웹 어플리케이션은 <그림1>과 같은 과정을 거쳐 사용자에게 View를 제공한다.

그림1. MVC 예제

 

kotlinworld.com에서 유저의 프로필을 보여주는 서비스를 만들었다고 해보자. 위의 그림1은 다음과 같이 설명될 수 있다.

 

1. 사용자가 devcho라는 유저의 프로필을 조회하고 싶다고 Spring Server에 요청을 한다. 보통 HTTP 방식으로 요청을 하게된다. 이때 요청 쿼리는 아래와 같다.

요청 : http://www.kotlinworld.com/user?name=devcho

2. 주소 뒤에 있는 값이 '/user'이므로 user에 매핑되어 있는 Controller에서 이 요청을 확인한다.

3. Controller는 Model에 사용자의 이름이 devcho라는 것(?name=devcho)을 Model에 전달하여 데이터를 감싸도록 요청한다.

4. Model은 데이터를 감싼다.

5. 감싸진 데이터는 View에 전달된다.

6. View에서는 전달받은 데이터를 이용해 View를 구성한다.

7. 구성된 View가 User에 전달된다.

 

이러한 과정을 통해 사용자에게 devcho의 프로필에 대한 View가 전달된다.

 

MVC의 의의

위에서 우리는 Controller는 요청을 확인하는 역할을 하며 Model은 데이터를 감싸는 역할을 하고 View는 Model에서 감싸진 데이터를 이용해 View를 구성하는 역할을 하는 것을 보았다.

 

이렇게 M(Model) V(View) C(Controller)가 관심사 분리되어 개발되는 것을 바로 MVC아키텍처로 개발된 웹 어플리케이션이라 부른다. 이러한 과정을 통해 각 부분이 서로에게 의존적이지 않게 개발될 수 있게 되어 개발의 확장성과 유연성을 모두 잡을 수 있게 된다.

반응형
저작자표시 비영리 변경금지
  1. MVC란?
  2. MVC 개요
  3. MVC의 의의


 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com

'Spring/MVC' 카테고리의 다른 글
  • SSR(서버 사이드 랜더링)과 CSR(클라이언트 사이드 랜더링)의 차이는 무엇인가?
  • 웹 서버와 웹 애플리케이션 서버(WAS)의 차이
  • [Spring with Kotlin] Spring Controller을 이용해 View 출력하기
  • [Spring with Kotlin] Spring Intellij 개발 환경 세팅하기
Dev.Cho
Dev.Cho
'조세영의 Kotlin World'는 Kotlin를 전문적으로 다루는 개인 기술 블로그입니다. Kotlin 세계에 대한 양질의 자료를 제공하며 Kotlin, Android, Spring, CI, CD 분야에 대해 다룹니다.
Dev.Cho
조세영의 Kotlin World
Dev.Cho
전체
오늘
어제

블로그 메뉴

  • LinkedIn
  • GitHub
  • 분류 전체보기 (491)
    • Kotlin (104)
      • Class and Interface (19)
      • Variable and Function (8)
      • Modifier (5)
      • Collection (14)
      • Time (8)
      • 동시성 제어 (7)
      • Reactive Programming (2)
      • Paradigm (2)
      • Kotlin 자료구조 (15)
      • Design Patterns (11)
      • Algorithm (3)
      • Exception (1)
      • 기타 (9)
      • Update History (0)
    • Coroutines (32)
      • Coroutine Basics (18)
      • Flow (9)
      • CoroutineScope (3)
      • Debugging (2)
    • Testing Codes (28)
      • Test 기본 (3)
      • JUnit5 (9)
      • MockK (6)
      • Testing Coroutines (1)
      • Testing Android (8)
      • Test 기타 (1)
    • Spring (50)
      • Dependency Injection (18)
      • Settings (5)
      • REST API (0)
      • DevTools (1)
      • MVC (18)
      • Error (2)
      • MongoDB (2)
      • Database (4)
    • Android (39)
      • Architecture (2)
      • Component (5)
      • Manifest (1)
      • Lifecycle (2)
      • Dependency Injection (17)
      • Resource (1)
      • Storage (1)
      • Security and Optimization (1)
      • WebView (2)
      • Error (6)
    • Android Jetpack Compose (33)
      • Compose (6)
      • Compose Modifier (13)
      • Compose Resource (4)
      • Compose State (4)
      • Compose Side Effect (6)
    • Android Jetpack Compose UI (48)
      • Compose Layout (14)
      • Compose Text (10)
      • Compose Button (5)
      • Compose Dialog (2)
      • Compose TextField (0)
      • Compose UIs (4)
      • Compose Animation (1)
      • Compose Canvas (12)
    • Android Jetpack (10)
      • Datastore (5)
      • ViewModel (4)
      • LiveData (1)
      • Paging (0)
    • KMP (5)
    • Programming (4)
    • Machine (9)
      • JVM (7)
      • Linux (2)
    • CI, CD (74)
      • Gradle (12)
      • Groovy Gradle (5)
      • Git (25)
      • Git Remote (5)
      • GitHub (5)
      • GitHub Actions (21)
    • Network (33)
      • GraphQL (12)
      • HTTP (11)
      • Basic (9)
    • 오픈소스 (3)
    • Database (3)
      • MongoDB (3)
    • IDE (6)
      • Android Studio (2)
      • Intellij (4)
    • Firebase (1)
    • Javascript (9)

공지사항

  • 코틀린 코루틴 완전 정복 강의 in 인프런 오픈
  • 코틀린 코루틴의 정석 책 출간
  • Kotlin Coroutines 공식 기술 문서 한국어 번⋯
  • GitHub에서 조세영의 Kotlin World를 Foll⋯
  • 문의&제안

인기 글

태그

  • 안드로이드
  • Jetpack Compose
  • Coroutine
  • java
  • junit4
  • 코틀린
  • GIT
  • HTTP
  • github actions
  • github
  • Android Compose
  • 스프링
  • Spring boot
  • 유닛 테스팅
  • compose
  • GraphQL
  • junit
  • Kotlin
  • kotlin spring
  • gradle
  • junit5
  • dagger2
  • flow
  • Unit Testing
  • 의존성 주입
  • Android
  • Spring
  • 코루틴
  • Class
  • Dependency Injection

최근 글

반응형
hELLO · Designed By 정상우.v4.3.0
Dev.Cho
Spring : Spring MVC란?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.