출시·고도화 중
Spring Boot 안내서 · 1/6
이 장에서는 Spring Boot 프로젝트를 만들고, 개발 서버를 띄워 첫 HTTP 요청에 응답하기까지의 과정을 다룹니다. 편집기 설정과 코드를 고치면 자동으로 다시 시작하게 해 주는 DevTools도 함께 살펴봅니다.
Spring Boot 애플리케이션은 JVM에서 돌아가므로 JDK가 필요합니다. 현재 세대의 Spring Boot는 Java 17 이상을 요구하며, 가능하면 최신 LTS 버전을 쓰는 것이 좋습니다. Gradle이나 Maven은 따로 설치하지 않아도 됩니다. 프로젝트에 함께 들어 있는 래퍼 스크립트(gradlew, mvnw)가 맞는 버전을 내려받아 실행합니다.
# JDK가 설치되어 있는지 확인합니다
java -version새 프로젝트는 보통 Spring Initializr에서 만듭니다. 웹 화면에서 빌드 도구(Gradle 또는 Maven), 언어(Java, Kotlin, Groovy), Spring Boot 버전, 그룹·아티팩트 이름, Java 버전, 의존성을 고른 뒤 Generate를 누르면 압축 파일을 내려받을 수 있습니다. 같은 일을 명령줄에서 curl로 할 수도 있습니다.
curl https://start.spring.io/starter.zip \
-d type=gradle-project \
-d dependencies=web,devtools \
-d baseDir=demo \
-o demo.zip
unzip demo.zip && cd demodependencies=web은 Spring MVC와 내장 Tomcat을 포함한 웹 스타터를 뜻합니다. Maven 프로젝트가 필요하면 type=maven-project, Kotlin으로 쓰려면 language=kotlin을 더합니다. 쓸 수 있는 매개변수 목록은 curl https://start.spring.io로 확인할 수 있습니다. IntelliJ IDEA, VS Code, Eclipse 같은 편집기도 내부에서 같은 Initializr를 불러 프로젝트를 만듭니다.
Initializr가 만든 DemoApplication.java는 애플리케이션의 진입점입니다. 같은 패키지에 컨트롤러 클래스를 하나 추가합니다.
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(@RequestParam(defaultValue = "World") String name) {
return "Hello, " + name + "!";
}
}@RestController는 이 클래스가 HTTP 요청을 처리하고, 메서드가 돌려준 값을 그대로 응답 본문으로 쓴다는 뜻입니다. @GetMapping("/hello")는 GET /hello 요청을 이 메서드에 연결합니다.
빌드 도구에 맞는 명령으로 애플리케이션을 실행합니다. 내장 웹 서버가 기본 포트 8080에서 요청을 기다립니다.
# Gradle 프로젝트 (Windows에서는 gradlew.bat bootRun)
./gradlew bootRun
# Maven 프로젝트 (Windows에서는 mvnw.cmd spring-boot:run)
./mvnw spring-boot:run
# 다른 터미널에서 확인합니다
curl "http://localhost:8080/hello?name=Spring"Hello, Spring!이 출력되면 성공입니다. 포트를 바꾸려면 src/main/resources/application.properties에 server.port=9090을 적습니다.
spring-boot-devtools를 추가하면 클래스 경로의 파일이 바뀔 때 애플리케이션이 자동으로 다시 시작되고, 개발에 편한 기본 설정이 적용됩니다. 위 curl 명령에서 devtools를 넣었다면 이미 들어 있습니다. 직접 추가할 때는 다음과 같이 적습니다.
// build.gradle.kts
dependencies {
developmentOnly("org.springframework.boot:spring-boot-devtools")
}<!-- pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>DevTools는 java -jar로 실행하는 운영 환경에서는 자동으로 꺼집니다. IntelliJ IDEA에서는 파일을 저장한 뒤 프로젝트를 빌드해야 재시작이 일어나므로, 자동 빌드 설정을 켜 두면 편합니다.
어느 편집기든 application.properties의 키 자동 완성과 설명을 보여 주므로 설정 항목을 외울 필요가 없습니다.
curl)로 만듭니다../gradlew bootRun 또는 ./mvnw spring-boot:run으로 내장 서버를 띄웁니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.