자바 백엔드 입문 12편. start.spring.io에서 첫 Spring Boot 프로젝트 zip을 받아 IntelliJ에서 실행해 보는 가장 손에 잡히는 글. 8단계 선택 화면과 생성된 디렉토리 구조까지 풀어쓴 학습 노트.
이 글은 자바 백엔드 입문 시리즈 59편 중 12편이에요. 11편에서 Spring Framework가 도대체 뭔지 풀었다면, 7편은 가장 손에 잡히는 글 — start.spring.io로 첫 Spring Boot 프로젝트 만들기입니다. 끝까지 따라하면 IntelliJ 콘솔에 "Tomcat started on port 8080" 이 뜨고, 자바 백엔드가 도는 첫 화면을 직접 보게 돼요.
start.spring.io가 어렵게 들리는 이유는 없어요
이번 글은 "어렵게 느껴지는 이유" 단원이 거의 필요 없어요. start.spring.io는 한국말로 "입력 칸 8개 채우고 버튼 누르면 프로젝트 zip 받음" 으로 끝나는 사이트거든요. 다만 8개 칸이 "이게 뭘 의미하는지" 모르면 "기본값으로 두면 되나" 가 어색해지니까, 이 글에서 8개 칸을 다 풀어 갈게요.
비유 한 줄 — start.spring.io는 IKEA 가구 선택 사이트예요. "어떤 가구 종류, 어떤 색깔, 어떤 사이즈" 를 체크하면 "필요한 부품이 다 들어간 박스" 가 만들어져요. Spring Boot 프로젝트도 똑같이 "버전·언어·의존성" 을 체크하면 "필요한 파일이 다 들어간 zip" 이 만들어집니다.
start.spring.io란 무엇인가
Spring Initializr (start.spring.io)는 Spring 공식 사이트에서 운영하는 Spring Boot 프로젝트 골격 생성기예요. 2014년 Spring Boot 출시와 함께 등장했고, "새 프로젝트 시작이 너무 번거롭다" 는 문제를 한 페이지로 해결한 도구입니다.
사이트 주소는 https://start.spring.io. 한 페이지짜리 폼이고, 입력 칸 8개를 채우고 "GENERATE" 버튼을 누르면 ZIP 파일이 다운로드돼요. 그 ZIP을 풀어 IDE로 열면 — 끝. 첫 Spring Boot 프로젝트 시작 준비가 다 됐어요.
프로젝트 생성 8단계 — 입력 칸 하나씩 풀어보기
start.spring.io 화면을 그대로 따라가며 풀어볼게요.
1. Project — Maven 또는 Gradle
10편에서 다룬 의존성 관리 도구. 입문자는 Gradle - Groovy 또는 Gradle - Kotlin 추천. Maven으로 시작해도 동작에는 차이 없어요.
2. Language — Java / Kotlin / Groovy
자바 백엔드 입문 시리즈라서 Java 선택. Kotlin은 자바와 호환되는 모던 언어인데, 시리즈에서 다루지 않아요.
3. Spring Boot — 버전 선택
"3.X.X (SNAPSHOT)" 같은 표시가 보여요. SNAPSHOT은 개발 중 버전이라 피하고, 숫자만 보이는 안정 버전 중 가장 높은 걸 고르세요(예: 3.5.0). Spring Boot 3.x는 Java 17 이상이 필수입니다.
4. Project Metadata — 5개 칸
- Group — 회사·프로젝트 도메인을 거꾸로 쓴 형태. 개인이면
com.example같이 박아도 OK. 회사면com.coupang처럼. - Artifact — 프로젝트 이름. 보통 영문 소문자 + 하이픈.
my-shop,order-service같이. - Name — Artifact와 보통 동일하게 자동 채워짐.
- Description — 프로젝트 설명 한 줄. 비워둬도 OK.
- Package name — Group + Artifact 조합으로 자동.
com.example.myshop같이.
5. Packaging — Jar 또는 War
Jar 추천. "내장 Tomcat 서버 포함, .jar 하나만 실행하면 백엔드가 떠요" 라는 Spring Boot의 핵심 장점이 Jar에서 빛납니다. War는 별도 WAS(Tomcat·Jetty)에 배포할 때 쓰는데, 신규 프로젝트는 거의 안 써요.
6. Java — 17 또는 21
LTS 버전만 표시돼요. Java 17 또는 Java 21 선택. 1편에서 다룬 "신규 프로젝트는 Java 17" 원칙 그대로.
7. Dependencies — 의존성 선택 (핵심)
화면 오른쪽에 "ADD DEPENDENCIES" 버튼이 있어요. 누르면 라이브러리 목록이 검색 가능한 형태로 떠요. 입문 첫 프로젝트는 다음 3개만 추가하면 충분해요:
- Spring Web — HTTP 요청 처리 + 내장 Tomcat 서버
- Spring Boot DevTools — 코드 변경 시 자동 재시작 (개발 편의)
- Lombok —
@Getter·@Setter자동 생성 (보일러플레이트 제거)
나중에 DB를 다룰 땐 Spring Data JPA + PostgreSQL Driver, 보안 다룰 땐 Spring Security 같이 추가해요. 처음엔 3개만.
8. GENERATE 버튼
화면 하단의 큰 초록 버튼. 누르면 ZIP 파일이 다운로드돼요. 끝.
macOS는 Cmd + ⏎, Windows는 Ctrl + ⏎ 단축키로 바로 다운로드 시작. 매번 페이지 끝까지 스크롤 안 해도 됨.
생성된 프로젝트 디렉토리 구조
다운받은 ZIP을 풀면 다음과 같은 구조가 보여요.
my-shop/
├── build.gradle ← Gradle 빌드 스크립트 (의존성 목록)
├── settings.gradle ← 프로젝트 이름·모듈 설정
├── gradlew, gradlew.bat ← Gradle wrapper (시스템에 Gradle 안 깔려도 동작)
├── gradle/ ← wrapper 보조 파일
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/myshop/
│ │ │ └── MyShopApplication.java ← 메인 클래스
│ │ └── resources/
│ │ ├── application.properties ← 설정 파일
│ │ ├── static/ ← 정적 파일 (CSS·JS·이미지)
│ │ └── templates/ ← 템플릿 (Thymeleaf·JSP)
│ └── test/
│ └── java/
│ └── com/example/myshop/
│ └── MyShopApplicationTests.java ← 기본 테스트
├── .gitignore
├── HELP.md
└── README.md
핵심 폴더 3개:
- src/main/java — 비즈니스 로직 자바 코드 (당신이 짤 코드 99% 여기)
- src/main/resources — 설정 파일·정적 자원·템플릿
- src/test/java — 테스트 코드
10편에서 "Maven은 컨벤션 강제" 했죠. Gradle도 Maven 컨벤션을 따라가서 이 폴더 구조가 표준입니다. 이 구조를 따라야 Spring Boot가 자동으로 인식해요.
메인 클래스 — @SpringBootApplication
핵심 파일이 하나 있어요. src/main/java/com/example/myshop/MyShopApplication.java. 열어 보면 단 5줄짜리예요.
package com.example.myshop;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyShopApplication {
public static void main(String[] args) {
SpringApplication.run(MyShopApplication.class, args);
}
}
이 5줄이 Spring Boot 프로젝트의 심장이에요. 각 줄을 풀어볼게요.
@SpringBootApplication— 마법의 어노테이션. 안에@Configuration+@EnableAutoConfiguration+@ComponentScan세 개가 합쳐져 있어요. "이 패키지부터 시작해서 모든 클래스 스캔, 발견한 Bean들 다 컨테이너에 등록, 자동 설정 적용" 을 한 줄로 명령.SpringApplication.run(...)— Spring Boot 시동 함수. 내장 Tomcat을 띄우고, IoC 컨테이너를 만들고, 모든 Bean을 등록하고, 8080 포트를 열어 요청 대기.
이 메인 클래스를 IDE에서 실행하면 (Run 또는 ▶ 버튼), 콘솔에 다음이 떠요:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.5.0)
...
Tomcat started on port 8080 (http) with context path '/'
Started MyShopApplication in 2.345 seconds (process running for 2.876)
Tomcat started on port 8080 줄이 보이면 성공. 브라우저에서 http://localhost:8080 으로 접속하면 "Whitelabel Error Page" 가 떠요. 이건 "컨트롤러를 안 만들었으니 띄울 페이지가 없다" 는 메시지일 뿐, 백엔드는 정상 동작 중이에요. 8편에서 컨트롤러 한 개를 추가하면 "Hello, Spring" 같은 응답을 띄울 수 있어요.
IntelliJ vs VSCode — 어느 IDE?
입문자는 보통 둘 중 하나로 시작해요.
- IntelliJ IDEA Community Edition — 무료. 자바 표준 IDE. "Spring 코드 짜는 데 가장 친절한 IDE" 라는 평이 압도적. 일단 IntelliJ 권장.
- VSCode + Java Extension Pack — 가볍고 익숙한 IDE. 자바 백엔드 본격 개발이 깊어지면 IntelliJ로 갈아타는 게 일반적.
IntelliJ에서 다운받은 ZIP을 "Open Project" 로 열면 — Gradle이 의존성을 자동 다운로드 (처음 1~3분 걸림). 메인 클래스 옆 "▶ Run" 버튼만 누르면 끝.
프로젝트 첫 실행이 안 되면 90%는 JDK 버전 불일치예요. start.spring.io에서 Java 17 골랐다면 시스템에 JDK 17 설치 + IntelliJ Project Structure에서 SDK = 17 지정 확인. java -version 명령으로 콘솔에서 확인 가능.
한 줄 정리 — start.spring.io에서 ZIP 받아 IDE로 열고 메인 클래스 ▶ Run. 콘솔에 "Tomcat started" 보이면 첫 백엔드 성공.
시험 직전 한 번 더 — 첫 프로젝트 입문자가 매번 헷갈리는 것
- start.spring.io = Spring Initializr. Spring Boot 프로젝트 골격 생성기
- 입력 칸 8개 = Project / Language / Spring Boot / Group / Artifact / Packaging / Java / Dependencies
- Project = Gradle - Groovy 추천 (신규 표준)
- Language = Java (Kotlin·Groovy도 가능)
- Spring Boot = 숫자만 보이는 최신 안정 버전 (SNAPSHOT 피하기)
- Group = 도메인 거꾸로 (
com.example), Artifact = 프로젝트 이름 (my-shop) - Packaging = Jar (내장 Tomcat, 단일 파일 실행)
- Java = 17 또는 21 (LTS만)
- 첫 의존성 3개 = Spring Web + DevTools + Lombok
- GENERATE 버튼 (또는
Cmd/Ctrl + ⏎) 누르면 ZIP 다운로드 - 표준 디렉토리 구조 =
src/main/java·src/main/resources·src/test/java - 메인 클래스에
@SpringBootApplication어노테이션이 핵심 @SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan셋이 합쳐진 것SpringApplication.run()= Spring Boot 시동 함수 — Tomcat 띄움 + IoC 컨테이너 생성 + Bean 등록 + 포트 8080 열기- 콘솔에
Tomcat started on port 8080보이면 성공 - 브라우저
http://localhost:8080접속 시 "Whitelabel Error Page" = 컨트롤러 미작성, 백엔드는 정상 동작 - IDE는 IntelliJ IDEA Community 추천 (무료)
- 첫 실행 안 되면 90% JDK 버전 불일치 —
java -version으로 확인 - 의존성 자동 다운로드는 처음 1~3분 걸림 — Gradle 캐시 만들어지면 다음부터는 즉시
- Spring Boot DevTools가 있으면 코드 수정 시 자동 재시작 (서버 껐다 켤 필요 X)
- Lombok 의존성만 추가하면 안 되고 IntelliJ 플러그인도 설치해야 동작
- start.spring.io는 IntelliJ Ultimate Edition에 통합돼 있음 — IDE 안에서도 동일 화면 사용 가능
시리즈 다른 편 (앞뒤 글 모음)
이전 글:
- 7편 — 자바 예외 처리
- 8편 — 자바 Optional null 안전
- 9편 — 자바 Stream API 람다
- 10편 — Maven·Gradle 의존성 관리
- 11편 — Spring Framework란
다음 글: