Spring boot

버전 2 - 0. 패키지 구조 변경 하기

mynote6676 2025. 6. 22. 18:00

기존 패키지 구조 형태

V1: 계층 중심 패키지 구조 
com.tenco.blog
├── controller/               # 계층별 분리
│   ├── BoardController
│   └── UserController
├── model/                    # 모든 엔티티가 한 곳에
│   ├── Board
│   └── User  
├── service/                 # 모든 서비스 클래스가 한 곳에
│   ├── BoardService
├── repository/               # 모든 리포지토리가 한 곳에
│   ├── BoardNativeRepository
│   └── UserRepository
├── dto/                      # 모든 DTO가 한 곳에
│   ├── BoardRequest
│   └── UserRequest
└── util/
    └── MyDateUtil

// 문제점: Board 관련 파일들이 여러 패키지에 흩어져 있음
// BoardController ← controller 패키지
// Board          ← model 패키지  
// BoardRepository ← repository 패키지
// BoardRequest   ← dto 패키지

 

Spring MVC란?

MVC(Model-View-Controller)는 애플리케이션을 세 가지 역활로 분리하는 디자인

패턴입니다.

 

------------------------------------------------------------------------------------------------------------

 

도메인 중심 구조로 전환

도메인이란?

- 도메인(Domain)은 소프트웨어가 해결하려는 문제 영역이나 비즈니스 영역을 의미함

"어떤 문제 영역(분야)" 또는 "주제"를 의미하는 말이야.
개발에서는 **프로그램이 다루는 '업무 영역'이나 '주요 개념 단위'**를 말해.

 

쉽게 말하면?

“이 시스템(웹사이트, 앱 등)이 무엇을 다루는지에 대한 큰 분류”
즉, 현실 세계의 개념을 소프트웨어 안에서 분리해서 표현한 단위야.

 

블로그 시스템의 도메인들

	Board (게시글) 도메인
    - 게시글 작성, 수정, 삭제 ,조회
    - 조회수 증가, 인기글 설정
    -게시글 상태 관리 (공개/비공개/임시저장)
    
    User(사용자) 도메인
    - 회원가입, 로그인, 프로필 관리
    - 권한 관리, 활동 이력
    
    Comment (댓글) 도메인
    - 댓글 작성, 수정, 삭제
    
    Category (카테고리) 도메인
    - 카테고리 생성 ,관리
    - 게시글 분류

 

 

변경할 프로젝트 형태

com.tenco.blog
├── board/                    # Board 도메인의 모든 것이 한 곳에
│   ├── Board                 # 엔티티
│   ├── BoardController       # 컨트롤러
│   ├── BoardPersistRepository # 리포지토리
│   └── BoardRequest          # DTO
├── user/                     # User 도메인의 모든 것이 한 곳에
│   ├── User
│   ├── UserController
│   ├── UserRepository
│   └── UserRequest
└── utils/                    # 공통 기능
    └── MyDateUtil

// 장점: Board 관련된 모든 클래스가 board 패키지에 응집

728x90