[스프링 로드맵] 0편. 전체 그림 – REST부터 JPA까지 한 번에 보기

2026. 1. 19. 16:59·백엔드

스프링으로 웹 개발을 시작하면 용어가 한꺼번에 등장한다. MVC, JSP, REST, 컨트롤러, 서비스, 레포지토리…

문제는 이 단어들을 각각 외우면 이해가 안 된다는 점이다.

웹 애플리케이션은 결국 “요청이 들어오고, 서버가 처리하고, 응답을 내보내는 파이프라인” 하나로 동작한다. 이 글은 그 파이프라인을 먼저 정리한다.


1. 웹앱은 결국 이것만 한다: 요청 → 처리 → 응답

클라이언트(브라우저/앱)가 서버에 HTTP 요청을 보낸다.

  • 요청: GET /lectures?page=1
  • 응답: HTML(화면) 또는 JSON(데이터)

이때 서버가 하는 일은 크게 두 가지 중 하나다.

  1. 서버가 HTML을 만들어 준다(SSR)
  2. 서버는 JSON만 주고, 화면은 프론트가 만든다(CSR/SPA)

이 선택이 JSP/Thymeleaf/REST 같은 용어를 갈라놓는다.


2. MVC는 “요청 처리 방식(패턴)”이다

MVC는 Model-View-Controller의 약자고, 핵심은 역할 분리다.

  • Controller: 요청을 받는 입구, 어떤 로직을 호출할지 결정
  • Model: 데이터/비즈니스 로직 영역(실전에서는 Service/Repository/Domain으로 더 쪼갬)
  • View: 화면(HTML)을 만드는 부분

MVC는 “웹 요청 처리 흐름”이고, View는 JSP/Thymeleaf 등으로 구현한다.


3. JSP는 MVC의 “V(View)”를 구현하는 기술 중 하나

JSP는 서버에서 HTML을 만들어서 브라우저에 보내는 방식(SSR)에서 View를 만들 때 쓰는 도구다.

  • Spring MVC + JSP: 전통적인 조합(레거시/사내 시스템에서 흔함)
  • Spring MVC + Thymeleaf: 부트 기반에서 많이 쓰는 SSR 조합

즉, SSR로 화면을 만들면 MVC 흐름 위에서 JSP(또는 Thymeleaf)를 View로 쓴다.


4. REST는 “View를 서버에서 만들지 않는 방식”에 가깝다

REST API는 HTML을 만들어 주는 게 목적이 아니라, 데이터(JSON) 를 주는 게 목적이다.

  • GET /api/lectures → JSON 반환
  • 화면은 React/Vue 같은 프론트가 렌더링하거나, 모바일 앱이 사용한다.

그래서 REST API에서 @RestController가 등장한다.

  • @Controller는 보통 “뷰 이름 반환(HTML 렌더링)” 쪽
  • @RestController는 “반환값을 응답 바디(JSON)로” 쪽

정리하면 이렇게 된다.

  • MVC(SSR): Controller → Model → View(JSP/Thymeleaf) → HTML 응답
  • REST(API): Controller → Model → JSON 응답(뷰 렌더링 없음)

5. 그럼 “Spring MVC”는 REST랑 다른 건가?

엄밀히 말하면 REST도 스프링 MVC 위에서 동작한다. 차이는 “응답을 HTML로 만들지, JSON으로 보낼지”다.

  • 같은 컨트롤러라도
    • @Controller + 뷰 템플릿 → HTML
    • @RestController → JSON

즉, Spring MVC는 요청을 처리하는 기반 프레임워크고, 그 위에서 HTML도 만들고(JSON도 만들고) 둘 다 한다.


6. 폴더 구조(controller/service/repository/domain/dto)는 MVC 확장판이다

학교에서 MVC를 배우면 Model이 하나처럼 보이는데, 실제로는 Model이 너무 커져서 보통 쪼갠다.

  • controller: HTTP 입출력(라우팅/바인딩/응답)
  • service: 비즈니스 로직(유스케이스)
  • repository: DB 접근(JPA/쿼리)
  • domain(entity): 핵심 데이터 구조 + 규칙
  • dto: 계층 간 데이터 전달용(요청/응답)

MVC로 매핑하면:

  • Controller → controller
  • View → JSP/Thymeleaf (REST면 프론트가 View)
  • Model → service + repository + domain + dto

'백엔드' 카테고리의 다른 글

[스프링 로드맵] B-3. DI/Bean 실전 - @Autowired, @Qualifier, Profile  (0) 2026.01.19
[스프링 로드맵] B-2. DI/Bean 내부 - 빈 등록 방식과 라이프사이클  (1) 2026.01.19
[스프링 로드맵] B-1. DI/Bean 기본 - new 지옥에서 벗어나기  (1) 2026.01.19
[스프링 로드맵] A-2. REST 확장 - POST/PUT/DELETE와 ResponseEntity  (0) 2026.01.19
[스프링 로드맵] A-1. REST 입문 - JSON이 응답되는 이유  (0) 2026.01.19
'백엔드' 카테고리의 다른 글
  • [스프링 로드맵] B-2. DI/Bean 내부 - 빈 등록 방식과 라이프사이클
  • [스프링 로드맵] B-1. DI/Bean 기본 - new 지옥에서 벗어나기
  • [스프링 로드맵] A-2. REST 확장 - POST/PUT/DELETE와 ResponseEntity
  • [스프링 로드맵] A-1. REST 입문 - JSON이 응답되는 이유
samsam031
samsam031
samsam031 님의 블로그 입니다.
  • samsam031
    samsam031 님의 블로그
    samsam031
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 디지털포렌식
      • 드림핵 문제풀이
      • 대외활동
      • 개발 실습
      • 컴퓨터 보안
      • 클라우드
      • 자격증
      • 자연어처리
      • 백엔드
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
samsam031
[스프링 로드맵] 0편. 전체 그림 – REST부터 JPA까지 한 번에 보기
상단으로

티스토리툴바