Spring Boot 시작하기: 초보자 가이드
Source: Dev.to – Getting Started with Spring Boot: A Beginner’s Guide

소개
Spring Boot는 현대 백엔드 애플리케이션 생성을 단순화하는 강력한 Java 프레임워크입니다. 이 가이드에서 배우게 될 내용:
- Spring Boot의 기본
- 새로운 프로젝트 생성 방법
- 일반적인 프로젝트 구조
- Maven/Gradle을 이용한 의존성 관리
- 간단한 REST API 구축
🧠 전제 조건
시작하기 전에, 다음에 대한 기본적인 이해가 필요합니다:
- 핵심 Java 개념
- 객체 지향 프로그래밍 (OOP)
- 클래스, 메서드 및 인터페이스
- 기본 데이터베이스 개념 (테이블, 기본 키, 외래 키)
- 간단한 SQL 쿼리 작성
이러한 기본 지식은 학습을 보다 쉽게 따라갈 수 있도록 도와줍니다.
🎯 배울 내용
이 기사에서는 다음을 다룹니다:
- Spring Boot가 무엇인지
- Spring Boot가 도입된 이유
- Spring Boot 프로젝트 생성
- 프로젝트 구조 이해
- Maven으로 의존성 관리
- Spring Boot 애플리케이션 빌드 및 실행
- 간단한 REST API 만들기
Source Code
GitHub 저장소에서 정확한 코드를 확인할 수 있습니다:
📦 Spring Boot 소개
Spring Boot는 Spring Framework 위에 구축된 Java 프레임워크입니다. 수동 설정과 설정 작업을 줄여 개발을 간소화합니다.
광범위한 XML 또는 Java 설정을 작성하고 외부 서버를 설정하는 대신, Spring Boot는 다음을 제공합니다:
- 자동 구성
- 내장 서버
- 의견 기반 기본값
- 쉬운 REST API 지원
이러한 기능은 독립형, 프로덕션 준비된 애플리케이션을 구축하는 데 이상적입니다.
🧩 Spring Boot가 도입된 이유
Spring Boot 이전
- 프로젝트에 많은 설정이 필요했습니다.
- 개발자들은 반복적인 보일러플레이트 코드를 작성했습니다.
- 의존성 관리를 수동으로 해야 했습니다.
- 외부 애플리케이션 서버가 필요했습니다.
Spring Boot가 해결하는 문제
Spring Boot는 설정을 표준화하고 자동화하여 위에 열거된 문제점을 제거합니다.
⭐ Spring Boot의 주요 기능
- ✔ 자동 구성 – 종속성에 따라 애플리케이션을 자동으로 구성합니다.
- ✔ 임베디드 서버 – Tomcat, Jetty, Undertow를 포함하여 외부 서버가 필요 없습니다.
- ✔ 쉬운 REST API – 최소한의 코드로 웹 API를 구축합니다.
- ✔ 데이터베이스 통합 – JDBC, JPA 및 주요 데이터베이스와 원활하게 작동합니다.
- ✔ Spring Security 지원 – 내장된 인증 및 인가 기능을 제공합니다.
🚀 Spring Boot 프로젝트 만들기
가장 쉬운 방법은 Spring Initializr를 사용하는 것입니다 – 다음 주소로 이동하세요
https://start.spring.io.
단계
- Spring Initializr 열기
- 프로젝트 설정
- Project: Maven
- Language: Java
- Spring Boot version: (default)
- Group:
com.codewithtejas - Artifact:
store - Java version: 17
- Dependency 추가:
Spring Web - Generate 클릭
- 다운로드한 .zip 파일을 작업 공간에 압축 해제합니다.
📁 프로젝트 구조 이해
store
├── .mvn
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
├── pom.xml
└── target/ ← generated build output
주요 요소
pom.xml– 의존성 및 빌드 라이프사이클을 관리하는 Maven 기술서.mvnw/mvnw.cmd– 환경 간 일관된 Maven 버전을 보장하는 Maven 래퍼 스크립트.src/main/java– 애플리케이션 소스 코드.src/main/resources– 설정 파일(예:application.properties).src/test/java– 단위 및 통합 테스트(보통 JUnit).target/– Maven이 생성하는 디렉터리로, 컴파일된 클래스, 패키징된 아티팩트 및 기타 빌드 산출물을 포함합니다.
🛠 Maven으로 의존성 관리하기
Maven 의존성은 프로젝트의 pom.xml 파일에 선언합니다. 일반적인 Spring Boot 웹 의존성은 다음과 같습니다:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- version은 보통 생략합니다. Spring Boot의 의존성 관리가 자동으로 제공하기 때문입니다 -->
</dependency>
</dependencies>
| Element | Meaning |
|---|---|
| groupId | 조직 또는 프로젝트 그룹 (예: org.springframework.boot). |
| artifactId | 라이브러리/모듈 이름 (예: spring-boot-starter-web). |
| version | 라이브러리의 특정 버전. Spring Boot의 BOM을 사용할 경우 보통 생략하며, BOM이 적절한 버전을 자동으로 제공합니다. |
spring-boot-starter-web이 포함하는 내용
- Spring MVC – 핵심 웹 프레임워크
- Embedded Tomcat – 기본 서블릿 컨테이너 (Jetty/Undertow로 교체 가능)
- Jackson – JSON 직렬화/역직렬화
- Validation – Bean Validation (JSR‑380) 지원
의존성 업데이트
**pom.xml**을 수정하면 Maven(또는 IDE)이 보통 변경을 감지하고 프로젝트를 자동으로 다시 로드합니다.
수동으로 새로 고침이 필요하면 다음을 실행합니다:
# 프로젝트를 정리하고 업데이트된 의존성을 다시 다운로드합니다
mvn clean install
그 외 유용한 명령어:
mvn dependency:tree– 전체 의존성 그래프를 시각화합니다.mvn versions:display-dependency-updates– 의존성의 최신 버전을 목록으로 보여줍니다.
Spring Boot 애플리케이션 빌드 및 실행
간단한 REST 컨트롤러 만들기
1단계: 컨트롤러 패키지 생성
com.codewithtejas.store.controller
2단계: 컨트롤러 클래스 생성
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello from Spring Boot!";
}
}
어노테이션 설명
@RestController– 클래스를 REST 컨트롤러로 표시합니다.@RequestMapping("/api")– 클래스 내 모든 엔드포인트의 기본 URL 경로입니다.@GetMapping("/hello")–/api/hello에 대한 HTTP GET 요청을 처리합니다.
애플리케이션 실행
Maven Wrapper 사용 (권장):
./mvnw spring-boot:run
또는 Maven이 전역에 설치된 경우:
mvn spring-boot:run
애플리케이션은 기본적으로 포트 8080에서 시작합니다. http://localhost:8080/api/hello에 접속하면 응답을 확인할 수 있습니다.
🚀 다음은?
Spring Boot의 기본을 이해했으니, 다음 중요한 단계는 **Dependency Injection (DI)**와 Inversion of Control (IoC) Container를 배우는 것입니다. 이 개념들은 Spring Framework의 기반이며 Spring Boot 애플리케이션 전반에서 사용됩니다.
연결해요!
추천 자료, 도전 과제에 대한 더 나은 접근법, 혹은 인사이트가 있다면 언제든 알려 주세요! 댓글에 의견을 남겨 주세요.
코딩 즐겁게! 🎉
멋진 하루 보내세요!
