[CODE]/Spring Boot

[Spring Boot] 프로젝트 파일 구조 이해하기

원°C 2026. 5. 18. 11:43

1. 파일 구조 소개

📁 src
├── 📁 main
│   ├── 📁 java
│   │   └── 📁 프로젝트_파일_패키지
│   │       ├── 📁 controller
│   │       ├── 📁 domain
│   │       ├── 📁 repository
│   │       ├── 📁 service
│   │       └── 프로젝트_Application.java
│   │
│   └── 📁 resources
│       ├── 📁 static
│       ├── 📁 templates
│       └── application.properties
│
└── 📁 test
    └── 📁 java

📁 gradle
├── wrapper 관련 파일

build.gradle
settings.gradle
gradlew
gradlew.bat

 

📁 gradle

: Gradle 빌드 도구 관련 파일이 있는 곳.

 

역할 = 프로젝트 빌드, 실행, 의존성 관리

 

📁 resources

: 자바 코드가 아닌 설정 파일, HTML, 정적 파일이 들어가는 곳.

 

resources

/static

: CSS, JS, 이미지, 정적 HTML 같은 파일 위치.

브라우저가 직접 접근할 수 있다. 

 

resouces

/templates 

: Thymeleaf 같은 서버 템플릿 HTML 파일 위치.

컨트롤러의 return을 통해 접근한다.

 

📁 controller

: 사용자의 요청을 처음 받는 곳.

 

역할 = 요청 받기 → 필요한 데이터 준비 → 화면 또는 응답 반환

 

📁 domain

: 핵심 데이터 객체가 들어가는 곳.

 

역할 = 서비스에서 다루는 주요 객체 정의

예) Member 객체, Order 객체 ...

 

📁 repository

: 데이터를 저장하고 조회하는 곳.

 

역할 = DB 또는 메모리에 접근해서 데이터 저장/조회

예) 회원 저장/조회 ...

 

- interface 파일

: 해야 하는 일 목록

 

- 실제 구현 class 파일

: 그 일을 메모리 방식으로 실제 구현한 클래스

인터페이스와 실제 구현 클래스를 나누는 이유

- 나중에 저장방식을 바꾸기 쉽다.
  (예. 개인저장소 -> DB)
- 서비스단에서는 저장방식이 크게 상관없어진다. 

📁 service

: 비즈니스 로직이 들어가는 곳.

 

역할 = 규칙 처리(단순 저장/조회 X)

예) 회원가입 로직 ...

 


2. 전체 흐름 처리

사용자 요청
   ↓
controller
   ↓
service
   ↓
repository
   ↓
domain / DB
예) 회원가입

Controller: 요청 받음
Service: 중복 회원인지 검사하고 가입 처리
Repository: 회원 저장
Domain: Member 객체 사용