IntelliJ IDEA에서 제공하는 Spring Initializr를 사용하여 다음과 같이 프로젝트를 생성한다.
Spring Boot 3.2.x 버전의 지원 기간이 가장 길지만, 이번 프로젝트에서는 지원 기간이 가장 긴 Spring Boot 3.2.x 버전 대신
대부분의 기능과 버그들이 안정화 된 버전인 3.1.4 버전(GA, General Availability)을 사용하기로 결정했다.
Spring Boot 3.1.4에는 Java 17이 필요하며 Java 20까지 호환된다.
본 프로젝트에서는 Java 11 이후 새로운 LTS인 Java 17 을 사용할 것이다.
다음과 같이 프로젝트 개발에 필요한 기본적인 의존성 설정을 마쳤다. 추후 기능 개발에 필요한 의존성은 그때 그때 추가할 예정이다.
Lombok
: 반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러리
Spring Configuration Processor
: Spring Boot 애플리케이션의 Configuration 메타데이터를 처리하는데 도움을 주기 위한 도구
Docker Compose Support
: Docker Compose 명령을 Spring Boot 3에 위임할 수 있도록 하는 도구
Docker Compose 파일이 존재하는 것을 감지하고, 서비스에 연결하기 전에 자동으로 docker compose up
명령을 실행한다. 만약 서비스가 이미 실행 중이라면, 그 서비스에 연결한다.
또한, 애플리케이션이 종료될 때는 docker compose stop
명령어를 실행하여, Docker 컨테이너가 계속 메모리를 사용하는 문제를 해결한다.
Spring Web
Spring Data JPA
: JPA를 편리하게 사용할 수 있도록 지원하는 모듈
Validation
: 유효성 검사를 위한 의존성
Testcontainers
: 통합 테스트를 지원하기 위해 개발된 오픈 소스 Java 라이브러리로,
도커 컨테이너를 활용하여 외부 의존성들을 포함한 테스트 환경을 구축하고 관리하는 것을 지원한다.