기초가 없으면 기술은 흐려지고, 기술이 없으면 기초는 무의미하다.
본 문서에서는 Spring Boot 3.0.3 기반으로 Spring Initializr를 사용해 프로젝트를 신속하게 생성하는 방법과 기본 구조를 설명합니다.
사전 준비: JDK 17 설치
Spring Boot 3.x는 최소 Java 17 이상을 요구합니다. 기존에 Java 8 또는 Java 11를 사용 중이라면 반드시 업그레이드해야 합니다.
다음은 Java 17 주요 기능 개선사항 (JEP):
- 306: 항상 엄격한 부동 소수점 연산 모드 복원
- 356: 고도화된 의사 난수 생성기
- 382: macOS용 새로운 렌더링 파이프라인
- 391: macOS/AArch64 플랫폼 지원
- 398: Applet API 폐기 예정
- 403: JDK 내부 API 강력 캡슐화
- 406: switch 문에 대한 패턴 매칭(예고판)
- 407: RMI 활성화 메커니즘 제거
- 409: 밀봉 클래스(Sealed Classes)
- 410: 실험적 AOT 및 JIT 컴파일러 제거
- 411: 보안 매니저 폐기 예정
- 412: 외부 함수 및 메모리 API(실험 단계)
- 414: Vector API(제2차 실험 단계)
- 415: 컨텍스트 기반 역직렬화 필터
프로젝트 생성 방법
1. 웹 기반 생성 (Spring Initializr 공식 사이트)
공식 사이트로 접속하여 다음 항목을 설정:
- 빌드 도구: Maven 또는 Gradle 선택
- 언어: Java 등 선택
- Spring Boot 버전: 3.0.3 지정
- 프로젝트 정보: 그룹, 아티팩트, 이름, 설명, 패키지명, 패키징 방식, 자바 버전
- 의존성 추가: 필요한 라이브러리 선택 (예: Web, JPA, Security 등)
설정 후 Generate 클릭 → 압축 파일 다운로드 → 압축 해제 후 개발 환경에 임포트.
2. IntelliJ IDEA 내장 기능 사용
IDEA에서 새 프로젝트 생성 시 Spring Initializr 선택 → 구성 정보 입력 → 의존성 추가 → 생성 완료.
자동으로 src/main/java, resources, test 폴더와 main 클래스 생성됩니다.
프로젝트 구조 분석
├── .mvn/
│ └── wrapper/
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src/
├── main/
│ ├── java/
│ └── resources/
└── test/
├── java/
└── resources/
Maven Wrapper
시스템에 전역적으로 설치된 Maven이 없거나 버전 불일치 문제를 피하기 위해 포함된 mvnw 스크립트입니다.
.mvn/wrapper/: Wrapper 설정 및 실행 파일 저장mvnw/mvnw.cmd: Linux / Windows용 실행 스크립트
필요시 삭제 가능하지만, 일관된 빌드 환경 유지라면 유지 권장.
pom.xml
프로젝트의 모든 빌드 및 종속성 정보를 정의합니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.3</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
버전 관리는 부모 POM에서 관리되며, 일반적으로 수동으로 버전을 명시할 필요 없습니다.
java 디렉터리
주요 소스 코드 위치입니다. 자동 생성된 시작 클래스 예시:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication는 구성, 자동 설정, 컴포넌트 스캔을 포함하는 핵심 어노테이션입니다.
resources 디렉터리
application.properties또는application.yml: 애플리케이션 설정static/: CSS, JS, 이미지 등 정적 리소스templates/: Thymeleaf, FreeMarker 등의 템플릿 파일
test 디렉터리
단위 테스트 코드 작성 공간. JUnit 5 기반으로 자동 생성됩니다.