이번 시리즈는 Spring Boot로 REST API를 직접 구현하면서
컨트롤러/서비스/JPA/Validation/Jackson 흐름을 단계별로 익히는 실습입니다.
1강은 “기능 구현 전 프로젝트 세팅”이 핵심이라서,
실습을 그대로 따라가기 위한 Gradle 의존성 + application 설정(Profiles 포함)을 정리합니다.

아래 설정으로 프로젝트를 구성하면, 강의 실습 환경(REST API + JPA + H2 + 테스트)이 그대로 갖춰집니다.
plugins {
java
id("org.springframework.boot") version "4.0.0"
id("io.spring.dependency-management") version "1.1.7"
}
group = "com"
version = "0.0.1-SNAPSHOT"
description = "Demo project for Spring Boot"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-webmvc")
compileOnly("org.projectlombok:lombok")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("com.h2database:h2")
annotationProcessor("org.projectlombok:lombok")
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
runtimeOnly("org.springframework.boot:spring-boot-h2console")
// Spring Boot 4.0 부터는 h2-console 라이브러리를 직접 추가해야 합니다.
}
tasks.withType<Test> {
useJUnitPlatform()
}
@RestController)@GetMapping, @PostMapping 등)@Entity) 기반으로 DB와 매핑JpaRepository로 CRUD 구현@NotBlank, @Email, @Size 등)✅ 중요: Spring Boot 4.0부터는 H2 Console이 기본 포함이 아니라서
org.springframework.boot:spring-boot-h2console을 직접 추가해야 함
이번 프로젝트는 기본 설정(application.yml) + dev/test 프로필 설정을 분리해서 사용합니다.
dev로 활성화spring:
application:
name: back
profiles:
active: dev
output:
ansi:
enabled: always
datasource:
hikari:
auto-commit: false
jpa:
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
highlight_sql: true
use_sql_comments: true
logging:
level:
org.hibernate.orm.jdbc.bind: TRACE
org.hibernate.orm.jdbc.extract: TRACE
org.springframework.transaction.interceptor: TRACE
(실제 파일 기준) :contentReference[oaicite:0]{index=0}
개발 환경에서는 파일 기반 H2 DB를 사용합니다.
spring:
datasource:
url: jdbc:h2:./db_dev;MODE=MySQL
username: sa
password:
driver-class-name: org.h2.Driver
(실제 파일 기준) :contentReference[oaicite:1]{index=1}
테스트는 인메모리 H2를 사용해서, 실행할 때마다 깨끗한 DB로 테스트합니다.
spring:
datasource:
url: jdbc:h2:mem:db_test;MODE=MySQL
username: sa
password:
driver-class-name: org.h2.Driver
(실제 파일 기준) :contentReference[oaicite:2]{index=2}
application.yml에서 dev 프로필을 기본 활성화하고, dev/test를 분리하여 관리