Spring Initializr의 표준 폴더 구조
Spring Initializr는 Spring Boot 애플리케이션을 신속하게 시작할 수 있도록 도와주는 도구입니다. Spring Initializr를 사용하여 생성된 프로젝트는 Maven 또는 Gradle을 빌드 도구로 선택할 수 있으며, 표준 폴더 구조를 따릅니다. 이 구조는 코드, 리소스, 테스트 파일 등을 명확하게 분리하여 프로젝트를 체계적으로 관리할 수 있게 합니다. 아래는 Spring Initializr를 통해 생성된 프로젝트의 표준 폴더 구조에 대한 설명입니다.
Spring Initializr 프로젝트의 표준 폴더 구조
java-campus/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── javacampus/
│ │ │ ├── JavaCampusApplication.java
│ │ ├── resources/
│ │ ├── application.properties
│ │ ├── static/
│ │ └── templates/
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── javacampus/
│ │ └── JavaCampusApplicationTests.java
├── .gitignore
├── mvnw
├── mvnw.cmd
├── pom.xml
└── README.md
주요 디렉터리와 파일 설명
java-campus/
: 프로젝트의 루트 디렉터리입니다. Spring Initializr를 통해 생성된 모든 파일과 디렉터리가 이 안에 위치합니다.src/
: 소스 파일이 포함된 디렉터리입니다.main
과test
디렉터리로 나누어져 있습니다.main/
: 애플리케이션의 주요 코드와 리소스 파일들이 들어갑니다.java/
: Java 소스 코드가 포함됩니다. 패키지 구조에 따라 디렉터리가 생성되며, 일반적으로 도메인 이름을 반대로 사용한 디렉터리 구조를 따릅니다. 이 안에 실제 애플리케이션 클래스와 관련된 모든 Java 파일이 위치합니다.resources/
: 애플리케이션에서 사용하는 리소스 파일들이 위치합니다. 이 디렉터리는 다음과 같은 하위 디렉터리를 포함할 수 있습니다:application.properties
: 애플리케이션의 기본 설정 파일입니다. Spring Boot의 설정 값을 정의할 수 있습니다.static/
: 정적 자원(예: HTML, CSS, JavaScript, 이미지 파일)이 위치하는 디렉터리입니다. Spring Boot는 이 디렉터리에 있는 파일을 자동으로 제공할 수 있습니다.templates/
: Thymeleaf와 같은 템플릿 엔진에서 사용하는 템플릿 파일이 위치합니다. 이 디렉터리의 파일들은 웹 애플리케이션의 뷰로 렌더링됩니다.
test/
: 테스트 코드가 포함된 디렉터리입니다.java/
: 테스트용 Java 소스 코드가 포함됩니다.src/main/java/
와 동일한 패키지 구조를 따르며, JUnit이나 TestNG와 같은 테스트 프레임워크를 사용하는 테스트 클래스가 이곳에 위치합니다.
.gitignore
: Git을 사용할 때 버전 관리에서 제외할 파일과 디렉터리를 지정하는 파일입니다. 일반적으로 IDE 설정 파일, 빌드 아티팩트, 로컬 환경 파일 등이 포함됩니다.mvnw
,mvnw.cmd
: Maven Wrapper 스크립트입니다. 프로젝트의 특정 Maven 버전을 사용하여 빌드할 수 있게 해주는 도구로, 로컬에 Maven이 설치되어 있지 않아도 이 스크립트를 통해 Maven 명령을 실행할 수 있습니다.pom.xml
: Maven 프로젝트의 구성 파일입니다. 의존성 관리, 빌드 설정, 플러그인 설정 등을 정의하며, 프로젝트를 빌드하고 배포하는 데 필요한 정보를 포함합니다.README.md
: 프로젝트에 대한 설명을 담고 있는 마크다운 형식의 파일입니다. 일반적으로 프로젝트의 개요, 설치 방법, 사용 방법 등을 설명하는 내용이 포함됩니다.
추가 설명
패키지 구조:
com.example.javacampus
과 같은 패키지 구조는 Spring Initializr에서 프로젝트를 생성할 때 제공된 그룹 ID와 아티팩트 ID에 따라 자동으로 생성됩니다. 이 구조는 프로젝트 내 클래스 파일들을 논리적으로 분리하고 관리하는 데 도움을 줍니다.자원 관리:
src/main/resources/
디렉터리는 애플리케이션이 실행될 때 클래스패스에 포함되므로, 리소스 파일을 쉽게 참조할 수 있습니다. 예를 들어,application.properties
파일에서 설정 값을 읽거나, 정적 자원(예: HTML 파일)을 제공하는 데 사용됩니다.
Spring Initializr에서 생성된 표준 폴더 구조는 Spring Boot 프로젝트를 체계적으로 관리하고, 유지보수하는 데 도움을 줍니다. 이 구조를 잘 이해하고 활용하면, Spring Boot 애플리케이션을 보다 효율적으로 개발할 수 있습니다.