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/java
  • src/main/resources
  • build.gradle 또는 pom.xml
  • application.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.properties
  • application.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/javaJava 코드 작성
src/main/resources설정 파일, 리소스 파일
application.properties프로젝트 실행 설정
build.gradleGradle 빌드 설정, 라이브러리 관리
pom.xmlMaven 빌드 설정, 라이브러리 관리
메인 클래스Spring Boot 실행 시작점

초보자가 처음에 봐야 할 순서

Spring Boot 프로젝트를 처음 열었다면 이 순서로 보면 좋습니다.

  1. 메인 클래스 찾기
  2. src/main/java 위치 확인하기
  3. src/main/resources 위치 확인하기
  4. application.properties 열어보기
  5. 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를 배울 때 훨씬 덜 헷갈리게 됩니다.