[특화 프로젝트] Spring Boot 프로젝트 생성 및 PostgreSQL 연동

2026. 3. 16. 09:51📚 빅데이터 분산

빅데이터 분산 처리 프로젝트 - Spring Boot 프로젝트 생성 및 PostgreSQL 연동

목표

1단계에서 Docker로 인프라(PostgreSQL, Hadoop, Spark)를 구성했다.
2단계에서는 Spring Boot 프로젝트를 생성하고, Docker로 띄운 PostgreSQL과 연결하는 것이 목표다.


1. Spring Initializr로 프로젝트 생성

https://start.spring.io 에서 프로젝트를 생성했다.

프로젝트 설정

항목 설정값
Project Gradle - Groovy
Language Java
Spring Boot 3.5.11
Group com.travel
Artifact bigdata
Packaging Jar
Configuration YAML
Java 17

Dependencies

의존성 용도
Spring Web REST API 개발
Spring Data JPA PostgreSQL과 ORM 연동
PostgreSQL Driver PostgreSQL JDBC 드라이버
Lombok 보일러플레이트 코드 자동 생성

GENERATE 버튼을 눌러 zip 파일을 다운로드하고, 압축을 풀어 IntelliJ에서 열었다.


2. Gradle이란?

Spring Boot 프로젝트는 수많은 외부 라이브러리에 의존한다.
Gradle은 이 라이브러리들을 자동으로 다운로드하고, 코드를 컴파일하고, 실행 가능한 파일(.jar)로 빌드해주는 도구다.

build.gradle 파일에 필요한 라이브러리를 선언하면, Gradle이 알아서 다운받아준다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'org.postgresql:postgresql'
    compileOnly 'org.projectlombok:lombok'
}

새로운 라이브러리가 필요하면 여기에 한 줄 추가하고 Gradle 새로고침만 하면 된다.


3. IntelliJ에서 프로젝트 열기

프로젝트 로드

  1. IntelliJ 실행 → Open → 압축 푼 bigdata 폴더 선택
  2. 우측 하단에 "Load Gradle Project" 팝업이 뜨면 클릭
  3. Gradle이 의존성 다운로드 및 프로젝트 빌드를 자동 수행

JDK 설정

프로젝트를 열면 "Project JDK is not defined" 경고가 뜰 수 있다.
상단의 Setup SDK 링크를 클릭하고 JDK 21을 선택하면 된다.

⚠️ Java 버전 주의

Spring Initializr에서 Java 17로 설정했지만, IntelliJ가 자동으로 JDK 21을 다운받은 경우
build.gradlelanguageVersion을 21로 맞춰줘야 빌드 에러가 발생하지 않는다.

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

빌드 확인

Gradle 패널의 새로고침 버튼(🔄)을 클릭하면 빌드가 시작된다.
하단 Build 탭에 BUILD SUCCESSFUL이 표시되면 성공이다.


4. PostgreSQL 연동 설정

application.yml

src/main/resources/application.yml 파일에 DB 접속 정보와 JPA 설정을 작성했다.

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/travel_db
    username: admin
    password: admin1234
    driver-class-name: org.postgresql.Driver

  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQLDialect

server:
  port: 8090

주요 설정 설명

항목 설명
datasource.url Docker로 띄운 PostgreSQL의 JDBC 접속 URL. 1단계에서 설정한 DB명(travel_db)과 포트(5432) 사용
datasource.username / password docker-compose.yml의 POSTGRES_USER, POSTGRES_PASSWORD와 동일하게 설정
jpa.hibernate.ddl-auto: update 엔티티 클래스를 기반으로 테이블을 자동 생성/수정. 개발 단계에서 편리함
jpa.show-sql: true 실행되는 SQL 쿼리를 콘솔에 출력하여 디버깅에 활용
server.port: 8090 기본 포트 8080은 Spark Master가 사용 중이므로 8090으로 변경

5. 연결 테스트

실행 전 확인사항

Docker 컨테이너가 켜져 있어야 한다. 터미널에서 확인 가능하다.

# travel-project 폴더에서
docker-compose up -d
docker ps

5개 컨테이너(postgres, namenode, datanode, spark-master, spark-worker)가 모두 Up 상태여야 한다.

Spring Boot 실행

IntelliJ에서 BigdataApplication.java 파일을 열고, public class BigdataApplication 옆의 초록색 ▶ 버튼을 클릭하여 Run을 선택한다.

성공 로그

콘솔에서 다음 로그들이 확인되면 연동 성공이다.

HikariPool-1 - Start completed.                    ← PostgreSQL 연결 성공
Tomcat started on port 8090 (http)                  ← 서버 8090 포트에서 실행
Started BigdataApplication in X.XX seconds          ← Spring Boot 정상 기동

💡 WARN 로그에 대하여

실행 시 두 가지 WARN 메시지가 나올 수 있다.

  • PostgreSQLDialect does not need to be specified explicitly — dialect를 명시하지 않아도 자동 감지된다는 안내. 무시해도 무방하다.
  • spring.jpa.open-in-view is enabled by default — open-in-view 설정 관련 안내. 개발 단계에서는 무시해도 된다.

두 가지 모두 에러가 아닌 참고용 경고이므로 정상 동작에 영향을 주지 않는다.


프로젝트 구조

bigdata/
├── build.gradle                          ← Gradle 빌드 설정 (의존성 관리)
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/travel/bigdata/
│   │   │       └── BigdataApplication.java   ← Spring Boot 메인 클래스
│   │   └── resources/
│   │       └── application.yml               ← DB 연결 및 서버 설정
│   └── test/
└── gradle/