Spring Boot 프로젝트를 처음 만들고 열어보면 파일과 폴더가 꽤 많이 보입니다.
처음에는 이런 생각이 들 수 있습니다.
“뭐가 이렇게 많지?”
“어디에 코드를 작성해야 하지?”
“어떤 파일을 건드려야 하는 거지?”
이번 글에서는 Spring Boot 프로젝트를 처음 열었을 때 보이는 기본 구조를 아주 기초부터 정리해보겠습니다.
목표는 모든 파일을 외우는 것이 아닙니다.
이번 글의 목표는 딱 하나입니다.
Spring Boot 프로젝트 폴더가 왜 이렇게 나뉘어 있는지 감 잡기
Spring Boot 프로젝트 기본 구조
Spring Initializr로 프로젝트를 만들면 보통 아래와 비슷한 구조가 생깁니다.
demo
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
├── build.gradle
└── settings.gradle
Maven으로 만들었다면 build.gradle 대신 pom.xml이 있을 수 있습니다.
처음에는 모든 파일을 다 볼 필요 없습니다.
우선 아래 5개만 보면 됩니다.
src/main/javasrc/main/resourcesbuild.gradle또는pom.xmlapplication.properties- 메인 클래스
1. src/main/java
src/main/java
이 폴더는 Java 코드를 작성하는 곳입니다.
쉽게 말하면, Spring Boot 애플리케이션의 실제 기능 코드가 들어가는 공간입니다.
예를 들어 앞으로 만들게 될 이런 코드들이 여기에 들어갑니다.
- Controller
- Service
- Repository
- Entity
- DTO
- 메인 실행 클래스
처음에는 이렇게 기억하면 됩니다.
Java 코드는 대부분
src/main/java안에 작성한다.
예를 들어 컨트롤러를 만든다면 보통 이런 식으로 들어갑니다.
src/main/java/com/example/demo/HelloController.java
즉, src/main/java는 Spring Boot 프로젝트의 핵심 코드 공간입니다.
2. src/main/resources
src/main/resources
이 폴더는 Java 코드가 아니라, 프로젝트 실행에 필요한 설정 파일과 리소스 파일이 들어가는 곳입니다.
대표적으로 이런 파일들이 들어갑니다.
application.propertiesapplication.yml- HTML 파일
- CSS 파일
- 이미지 파일
- SQL 파일
처음에는 이 정도만 기억하면 됩니다.
resources는 코드가 아니라 설정과 보조 파일을 넣는 곳입니다.
예를 들어 서버 포트, 데이터베이스 연결 정보 같은 설정은
보통 src/main/resources/application.properties 파일에 적습니다.
3. application.properties
src/main/resources/application.properties
이 파일은 Spring Boot 프로젝트의 설정 파일입니다.
쉽게 말하면, 프로젝트가 실행될 때 참고하는 설정 메모장 같은 파일입니다.
예를 들어 서버 포트를 바꾸고 싶다면 이렇게 적을 수 있습니다.
server.port=8081
그러면 기본 포트인 8080 대신 8081로 실행됩니다.
나중에 데이터베이스를 연결할 때도 이 파일을 많이 사용합니다.
예를 들면 이런 설정이 들어갈 수 있습니다.
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=
지금 당장 전부 이해할 필요는 없습니다.
처음에는 이렇게만 기억하면 됩니다.
application.properties는 Spring Boot의 실행 설정을 적는 파일입니다.
4. build.gradle 또는 pom.xml
Spring Boot 프로젝트에는 빌드 설정 파일이 있습니다.
Gradle 프로젝트라면:
build.gradle
Maven 프로젝트라면:
pom.xml
이 파일들은 프로젝트에 필요한 라이브러리와 빌드 설정을 관리합니다.
쉽게 말하면, 프로젝트가 사용하는 도구 목록이 적힌 주문서 같은 파일입니다.
예를 들어 Spring Web을 추가하면
build.gradle에는 대략 이런 내용이 들어갑니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
이 뜻은 간단합니다.
이 프로젝트에서 Spring Web 기능을 사용하겠다.
즉, build.gradle이나 pom.xml은
내 프로젝트가 어떤 기능을 사용할지 정하는 파일입니다.
처음에는 직접 많이 수정하지 않아도 됩니다.
다만 새로운 기능을 추가할 때 자주 보게 됩니다.
예를 들면:
- 웹 기능 추가
- 데이터베이스 기능 추가
- JPA 추가
- 테스트 라이브러리 추가
이런 것들이 이 파일에 기록됩니다.
5. 메인 클래스
Spring Boot 프로젝트를 만들면 보통 아래와 비슷한 Java 파일이 하나 있습니다.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
이 파일은 Spring Boot 애플리케이션의 시작점입니다.
쉽게 말하면, 프로그램의 전원 버튼 같은 역할입니다.
여기서 중요한 부분은 이 코드입니다.
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
Java 프로그램은 보통 main 메서드에서 시작합니다.
Spring Boot도 마찬가지입니다.
main 메서드가 실행되고,
그 안에서 SpringApplication.run()이 호출되면서 Spring Boot 애플리케이션이 실행됩니다.
처음에는 이렇게만 이해하면 됩니다.
메인 클래스는 Spring Boot 프로젝트를 실행하는 시작 파일입니다.
@SpringBootApplication은 뭘까?
메인 클래스 위에는 보통 이런 코드가 붙어 있습니다.
@SpringBootApplication
이것은 Spring Boot 애플리케이션이라는 것을 알려주는 표시입니다.
처음부터 내부 동작을 다 외울 필요는 없습니다.
지금 단계에서는 이렇게만 보면 됩니다.
@SpringBootApplication이 붙은 클래스가 Spring Boot 실행의 중심입니다.
나중에 더 공부하면 이 안에 여러 설정이 합쳐져 있다는 것을 알게 됩니다.
하지만 처음에는 “이 클래스가 Spring Boot 시작점이구나” 정도면 충분합니다.
폴더 구조를 역할로 나눠서 보면
처음에는 폴더 이름이 낯설지만, 역할로 나눠 보면 단순합니다.
| 위치 | 역할 |
|---|---|
src/main/java | Java 코드 작성 |
src/main/resources | 설정 파일, 리소스 파일 |
application.properties | 프로젝트 실행 설정 |
build.gradle | Gradle 빌드 설정, 라이브러리 관리 |
pom.xml | Maven 빌드 설정, 라이브러리 관리 |
| 메인 클래스 | Spring Boot 실행 시작점 |
초보자가 처음에 봐야 할 순서
Spring Boot 프로젝트를 처음 열었다면 이 순서로 보면 좋습니다.
- 메인 클래스 찾기
src/main/java위치 확인하기src/main/resources위치 확인하기application.properties열어보기build.gradle또는pom.xml확인하기
이렇게 보면 프로젝트 구조가 조금씩 눈에 들어옵니다.
처음부터 다 외우지 않아도 된다
Spring Boot 프로젝트를 처음 보면 파일이 많아 보입니다.
하지만 처음부터 전부 이해하려고 하면 오히려 더 헷갈립니다.
처음에는 딱 이것만 기억해도 됩니다.
Java 코드는 src/main/java
설정은 src/main/resources
라이브러리는 build.gradle 또는 pom.xml
실행 시작은 메인 클래스
이 정도만 알아도 다음 단계로 넘어갈 수 있습니다.
다음 단계
프로젝트 구조를 봤다면, 다음에는 직접 코드를 하나 만들어보는 것이 좋습니다.
다음 글에서는 간단한 Controller를 만들어서 브라우저에 문자열을 출력해보겠습니다.
예를 들면 아래 주소로 접속했을 때
http://localhost:8080/hello
이런 문장이 나오게 만들어볼 수 있습니다.
Hello Spring Boot
정리
이번 글에서는 Spring Boot 프로젝트의 기본 구조를 살펴봤습니다.
핵심은 아래와 같습니다.
src/main/java는 Java 코드를 작성하는 곳입니다src/main/resources는 설정과 리소스 파일이 들어가는 곳입니다application.properties는 실행 설정을 적는 파일입니다build.gradle또는pom.xml은 라이브러리와 빌드 설정을 관리하는 파일입니다- 메인 클래스는 Spring Boot 애플리케이션의 시작점입니다
처음에는 모든 파일을 완벽히 이해하지 않아도 됩니다.
중요한 것은 어떤 파일이 어떤 역할을 하는지 대략 감을 잡는 것입니다.
이 감이 생기면 다음에 Controller, Service, Repository를 배울 때 훨씬 덜 헷갈리게 됩니다.