스프링부트 소개 3편: 개발환경 구축하기 - JDK부터 IDE까지 완벽 가이드
스프링부트의 이론을 익혔다면 이제 실제로 개발할 수 있는 환경을 구축할 차례입니다. 이번 글에서는 JDK 설치부터 IDE 설정, 프로젝트 생성까지 스프링부트 개발환경을 완벽하게 구축하는 방법을 단계별로 알아보겠습니다.
1단계: JDK 17+ 설치하기
Windows 환경
# 1. Oracle JDK 다운로드 (https://oracle.com/java/technologies/downloads)
# 2. 또는 OpenJDK 사용 (추천)
# Chocolatey를 통한 설치
choco install openjdk17
# 설치 확인
java -version
# 출력 예시: openjdk version "17.0.11" 2024-04-16
macOS 환경
# Homebrew를 통한 설치 (추천)
brew install openjdk@17
# 환경변수 설정
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 설치 확인
java -version
Linux (Ubuntu) 환경
# APT를 통한 설치
sudo apt update
sudo apt install openjdk-17-jdk
# 설치 확인
java -version
javac -version
# JAVA_HOME 설정
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
source ~/.bashrc
🎯 JDK 17 선택 이유
- LTS(Long Term Support): 2029년까지 장기 지원
- 스프링부트 3.x 필수 요구사항
- 성능 개선: G1GC 개선, ZGC 지원
- 새로운 언어 기능: Pattern Matching, Records, Sealed Classes
2단계: IDE 선택 및 설정
IntelliJ IDEA (강력 추천)
설치 및 기본 설정
# 1. JetBrains 홈페이지에서 다운로드
# 2. Community Edition (무료) 또는 Ultimate (유료)
# 3. 대학생은 GitHub Student Pack을 통해 Ultimate 무료 사용 가능
스프링부트 개발 최적화 설정
# IntelliJ IDEA 설정 (Settings/Preferences)
File > Settings > Build, Execution, Deployment > Build Tools > Gradle
- Build and run using: IntelliJ IDEA (더 빠른 빌드)
- Run tests using: IntelliJ IDEA
# Java Compiler 설정
File > Settings > Build, Execution, Deployment > Compiler > Java Compiler
- Additional command line parameters: -parameters
# Spring Boot 3.2+ 에서 필수 설정
필수 플러그인 설치
📦 권장 플러그인 목록:
✅ Spring Boot (기본 포함)
✅ Spring Data (기본 포함)
✅ Database Navigator
✅ GitToolBox
✅ SonarLint
✅ Rainbow Brackets
✅ String Manipulation
Visual Studio Code (경량화 선택)
필수 확장 프로그램
{
"recommendations": [
"vscjava.vscode-java-pack",
"vmware.vscode-spring-boot",
"vscjava.vscode-spring-initializr",
"vscjava.vscode-spring-boot-dashboard",
"redhat.java",
"gabrielbb.vscode-lombok"
]
}
VS Code 스프링부트 설정
// settings.json
{
"java.home": "/path/to/java-17",
"java.configuration.runtimes": [
{
"name": "JavaSE-17",
"path": "/path/to/java-17"
}
],
"spring-boot.ls.java.home": "/path/to/java-17"
}
Eclipse (전통적인 선택)
Spring Tool Suite 4 설치
# 1. https://spring.io/tools 에서 STS4 다운로드
# 2. 압축 해제 후 실행
# 3. Java 17 런타임 설정
3단계: 빌드 도구 설정
Gradle (추천)
# Gradle Wrapper 사용 (프로젝트에 포함)
./gradlew --version
# 또는 시스템 전역 설치
# macOS
brew install gradle
# Windows (Chocolatey)
choco install gradle
# Linux
sudo apt install gradle
Maven
# macOS
brew install maven
# Windows (Chocolatey)
choco install maven
# Linux
sudo apt install maven
# 설치 확인
mvn -version
4단계: 스프링부트 프로젝트 생성
방법 1: Spring Initializr 웹사이트 (추천)
# 1. https://start.spring.io/ 접속
# 2. 프로젝트 설정
추천 설정값:
Project: Gradle - Groovy
Language: Java
Spring Boot: 3.4.1 (최신 버전)
Project Metadata:
Group: com.example
Artifact: demo
Name: demo
Package name: com.example.demo
Packaging: Jar
Java: 17
Dependencies:
- Spring Web
- Spring Data JPA
- H2 Database (개발용)
- Spring Boot DevTools
- Lombok
방법 2: IntelliJ IDEA 내장 기능
# 1. File > New > Project
# 2. Spring Initializr 선택
# 3. 프로젝트 설정 입력
# 4. 의존성 선택
# 5. 프로젝트 생성
방법 3: 커맨드라인 (고급 사용자)
# curl을 사용한 프로젝트 생성
curl https://start.spring.io/starter.zip \
-d dependencies=web,data-jpa,h2,devtools,lombok \
-d type=gradle-project \
-d language=java \
-d bootVersion=3.4.1 \
-d baseDir=my-spring-app \
-o my-spring-app.zip
unzip my-spring-app.zip
cd my-spring-app
5단계: 프로젝트 구조 이해하기
my-spring-app/
├── gradle/
│ └── wrapper/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/demo/
│ │ │ └── DemoApplication.java
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── static/
│ │ └── templates/
│ └── test/
│ └── java/
│ └── com/example/demo/
├── build.gradle
├── gradlew
├── gradlew.bat
└── settings.gradle
핵심 파일 분석
build.gradle
plugins {
id 'org.springframework.boot' version '3.4.1'
id 'io.spring.dependency-management' version '1.1.4'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
DemoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
6단계: 개발 환경 최적화
DevTools 활용하기
# application.yml
spring:
devtools:
restart:
enabled: true
additional-paths: src/main/java
livereload:
enabled: true
DevTools 주요 기능:
- 자동 재시작: 코드 변경 시 애플리케이션 자동 재시작
- LiveReload: 브라우저 자동 새로고침
- 프로퍼티 기본값: 개발 환경에 최적화된 설정 자동 적용
데이터베이스 설정 (H2 개발용)
# application-dev.yml
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
h2:
console:
enabled: true
path: /h2-console
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate:
format_sql: true
로깅 설정
# application.yml
logging:
level:
com.example.demo: DEBUG
org.springframework.web: DEBUG
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
7단계: 첫 번째 애플리케이션 실행
1. Hello World 컨트롤러 생성
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/")
public String hello() {
return "Hello, Spring Boot 3.4.1!";
}
@GetMapping("/health")
public String health() {
return "Application is running with Java " +
System.getProperty("java.version");
}
}
2. 애플리케이션 실행
# Gradle을 사용한 실행
./gradlew bootRun
# 또는 IDE에서 DemoApplication.java 실행
# 또는 JAR 파일 빌드 후 실행
./gradlew build
java -jar build/libs/demo-0.0.1-SNAPSHOT.jar
3. 실행 확인
# 브라우저에서 접속 또는 curl 사용
curl http://localhost:8080/
# 출력: Hello, Spring Boot 3.4.1!
curl http://localhost:8080/health
# 출력: Application is running with Java 17.0.11
# H2 콘솔 접속
http://localhost:8080/h2-console
8단계: 개발 도구 및 유틸리티 설정
Git 설정
# 프로젝트 루트에서
git init
echo "build/" >> .gitignore
echo ".gradle/" >> .gitignore
echo "*.log" >> .gitignore
echo ".DS_Store" >> .gitignore
git add .
git commit -m "Initial Spring Boot project setup"
Docker 개발 환경 (선택사항)
# Dockerfile
FROM openjdk:17-jdk-slim
VOLUME /tmp
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
# docker-compose.yml (데이터베이스 포함)
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/myapp
- SPRING_DATASOURCE_USERNAME=user
- SPRING_DATASOURCE_PASSWORD=password
db:
image: postgres:15
environment:
- POSTGRES_DB=myapp
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
ports:
- "5432:5432"
트러블슈팅: 자주 발생하는 문제들
1. Java 버전 문제
# 문제: Java 17이 설치되었는데 인식되지 않음
echo $JAVA_HOME
which java
# 해결: JAVA_HOME 환경변수 올바르게 설정
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
2. 포트 충돌 문제
# application.yml
server:
port: 8081 # 기본 8080에서 변경
3. 인코딩 문제 (Windows)
# application.yml
server:
servlet:
encoding:
charset: UTF-8
enabled: true
force: true
4. Gradle 실행 권한 문제 (Linux/macOS)
chmod +x gradlew
./gradlew bootRun
성능 최적화 팁
JVM 옵션 설정
# 개발 환경용 JVM 옵션
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
./gradlew bootRun
IDE 성능 최적화
# IntelliJ IDEA VM 옵션 (Help > Edit Custom VM Options)
-Xms2048m
-Xmx4096m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
개발 워크플로우 구축
1. 브랜치 전략
# Feature 브랜치 생성
git checkout -b feature/user-management
git checkout -b hotfix/security-patch
2. 코드 품질 도구 통합
// build.gradle에 추가
plugins {
id 'checkstyle'
id 'pmd'
id 'jacoco'
}
checkstyle {
toolVersion = '10.12.4'
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml")
}
3. 테스트 자동화
@SpringBootTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class DemoApplicationTests {
@Test
void contextLoads() {
// 애플리케이션 컨텍스트 로딩 테스트
}
@Test
@Sql("/test-data.sql")
void testWithTestData() {
// 테스트용 데이터와 함께 테스트
}
}
마무리 및 다음 단계
개발환경 구축이 완료되었습니다! 이제 다음과 같은 환경이 준비되었습니다:
✅ Java 17+ 개발 환경
✅ 최적화된 IDE 설정
✅ Spring Boot 3.4.1 프로젝트
✅ 개발 도구 및 유틸리티
✅ 자동화된 빌드/테스트 환경
이제 실제 애플리케이션 개발을 시작할 준비가 되었습니다. 다음 편에서는 스프링부트의 핵심 기능들을 활용하여 실제 웹 애플리케이션을 만드는 방법에 대해 알아보겠습니다.
팁: 개발 초기에는 H2 데이터베이스로 시작하되, 실제 프로덕션 환경을 고려하여 PostgreSQL이나 MySQL 등으로 전환할 계획을 세워두세요.
'Java & Spring > SpringBoot' 카테고리의 다른 글
스프링 부트 (Spring Boot) Entity, Repository, DAO, DTO 완벽 가이드 (2) | 2025.06.16 |
---|---|
스프링부트 소개 4편: 첫 번째 웹 애플리케이션 만들기 - 이론에서 실전까지 (1) | 2025.05.29 |
스프링부트 소개 2편: 버전별 특징과 선택 가이드 - 내 프로젝트에 맞는 버전은? (1) | 2025.05.28 |
스프링부트 소개 1편: 스프링부트란 무엇인가? - 개발자의 겨울을 끝내는 혁신적인 프레임워크 (2) | 2025.05.27 |