[스프링부트 #4] Spring 게시판 CRUD 연습 (Controller 중심)

Service, Repository 없이 Mock 데이터로 Controller 동작 흐름을 익히는 실전 연습을 하였습니다.
도경원's avatar
Aug 05, 2025
[스프링부트 #4] Spring 게시판 CRUD 연습 (Controller 중심)
Service, Repository 없이 Mock 데이터로 Controller 동작 흐름을 익히는 실전 연습

1. 프로젝트 구성 개요

  • Backend: Spring MVC (@Controller 중심)
  • Frontend: Mustache 템플릿
  • DB 미사용: Service, Repository 생략, 대신 Mock 데이터 사용
  • 목표: 요청과 응답 흐름을 익히고, URL-View 연결을 자연스럽게 다루기

2. 기능 흐름

1. 게시글 목록 페이지 조회 (GET)

notion image
  • 게시글 리스트를 생성하여 setAttribute("models", list)로 View에 전달
  • 반환 View: board/list.mustache

2. 게시글 상세 페이지 조회 (GET)

notion image
  • @PathVariable("id")를 통해 URL에서 id 추출
  • 해당 게시글 DTO를 Mock으로 만들어 View에 전달
  • 반환 View: board/detail.mustache

3. 게시글 작성 (POST)

notion image
  • DTO로 폼 데이터를 자동 바인딩 받음
  • DB 저장 없이 redirect:/board 처리

4. 게시글 삭제 (POST로 진행하기로 사전에 약속)

notion image
  • @PathVariable을 통해 id 추출
  • 실제 삭제 로직 없이 리다이렉트 처리

5. 게시글 수정 (POST로 진행하기로 사전에 약속)

notion image
  • DTO와 PathVariable을 함께 받아서 처리
  • 수정 후 상세페이지로 리다이렉트

3. DTO란?

  • DTO (Data Transfer Object)는 컨트롤러와 뷰, 또는 클라이언트와 서버 간에 데이터를 전달하기 위한 객체
  • 주로 요청 바디나 폼 데이터, 또는 응답할 데이터를 담는 데 사용한다
  • 엔티티(Entity)와는 달리 비즈니스 로직이 없고, 순수한 데이터 보관용

4. Lombok의 @Data 어노테이션

notion image
@Data는 Lombok에서 제공하는 어노테이션으로 다음 기능을 한 번에 만들어준다.
  • @Getter, @Setter
  • @ToString
  • @EqualsAndHashCode
  • @RequiredArgsConstructor (기본 생성자 포함)
즉, DTO에 필요한 모든 코드를 자동으로 생성해주는 아주 강력한 도구

5. 주요 개념 정리

개념
설명
@Controller
Spring MVC 진입지점
@GetMapping, @PostMapping
HTTP 메서드별 매핑
@PathVariable
URL 경로 값 추출
DTO
요청/응답 데이터 캡슐화 객체
@Data
Lombok의 코드 자동 생성 도구
HttpServletRequest.setAttribute()
View로 데이터 전달
redirect:/path
클라이언트에 리다이렉트 요청

 
이 코드를 직접 작성해보면서 URL, 컨트롤러, View 흐름의 구조를 익힐 수 있었고, DTO 설계와 데이터 전달 방식, Mock 데이터 기반으로 화면 렌더링 하는 법을 배웠다.
Share article

Gyeongwon's blog