본문 바로가기
SpringBoot/스프링 부트 프로젝트 생성

프로젝트 구조 이해

by DEVLIB 2025. 4. 14.
728x90

스프링 부트 기본 프로젝트 구조

Spring Initializr에서 생성한 기본 프로젝트는 다음과 같은 디렉토리 구조로 구성됩니다:

demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/demo/
│   │   │       └── DemoApplication.java         ← 메인 클래스
│   │   └── resources/
│   │       ├── static/                          ← 정적 파일(css, js, 이미지)
│   │       ├── templates/                       ← HTML 템플릿(Thymeleaf 등)
│   │       ├── application.properties           ← 설정 파일
│   │       └── application.yml                  ← (선택) YAML 형식 설정
│   └── test/
│       └── java/
│           └── com/example/demo/                ← 테스트 코드
├── build.gradle or pom.xml                      ← 의존성 및 빌드 설정
└── .gitignore, README.md 등

각 디렉토리/파일 상세 설명

DemoApplication.java

  • 스프링 부트 애플리케이션의 진입점
  • @SpringBootApplication 애너테이션이 핵심
  • 실행: main() 메서드로 프로그램 시작됨
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

src/main/java/

  • 애플리케이션의 비즈니스 로직이 담기는 핵심 디렉토리
  • 보통 아래와 같이 기능별로 패키지를 나눕니다:
com.example.demo
├── controller/
├── service/
├── repository/
├── entity/
└── config/
패키지 역할
controller 사용자 요청을 받는 API, View 진입점
service 비즈니스 로직 처리
repository DB 접근(JPA, MyBatis 등)
entity 데이터베이스 매핑 객체
config 스프링 설정(JavaConfig 등)

src/main/resources/

스프링이 자동으로 로딩하는 설정 및 리소스 디렉토리

디렉토리/파일 설명
static/ 정적 리소스(css, js, 이미지 등) 제공 (ex: /css/style.css)
templates/ Thymeleaf, Freemarker 같은 템플릿 엔진의 HTML 파일 위치
application.properties 또는 application.yml 환경 설정 (포트, DB, 로그 등)

src/test/java/

  • JUnit 기반 테스트 코드 작성 디렉토리
  • 스프링 부트는 테스트 프레임워크가 내장되어 있어 단위 테스트/통합 테스트 작성이 용이함
@SpringBootTest
class DemoApplicationTests {
    @Test
    void contextLoads() {
    }
}

build.gradle 또는 pom.xml

  • 의존성 관리빌드 설정 파일
  • 어떤 라이브러리를 사용할지 정의하며, 스프링 부트 스타터(spring-boot-starter-web 등)를 선언
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

프로젝트 구조 팁

  • 패키지 구조는 처음부터 기능별로 정리하는 습관을 들이세요.
  • 실무에서는 controller, service, repository, dto, exception 등의 패키지 구성이 기본입니다.
  • resources/application.yml은 설정의 중심입니다. 환경마다 다르게 관리할 수도 있어요 (application-dev.yml, -prod.yml 등).

요약

위치 역할
DemoApplication.java 애플리케이션 시작 지점
controller/ API 및 사용자 요청 처리
service/ 핵심 로직 구현
repository/ 데이터베이스와의 통신
resources/ 설정 파일 및 정적 리소스
LIST