이 글은 Spring Boot 어플리케이션을 구현하여, 웹 API 의 응답으로 “Hello World” 를 반환하는 예제 구현 방법을 설명합니다.
개요 #
사전준비 #
예제를 따라하기 전에 다음 도구들이 설치되어 있어야 합니다.
- JDK 11 이상
- IntelliJ IDEA Community
사용도구 #
이 글에서는 예제 구현을 위해 다음과 같은 도구들이 사용됩니다.
- Spring Boot
- Gradle
이 도구들은 별도의 설치가 필요 없습니다.
Spring Boot 를 사용하는 이유 #
Spring Boot 는 다음과 같은 장점을 가지고 있기 때문에, Java 를 이용하여 REST API 를 구현하거나 마이크로 서비스를 구축하려고 하는 경우 많이 사용됩니다.
- 복잡한 Spring 설정을 할 필요가 없습니다.
- Tomcat 을 내장하고 있기 때문에 별도의 웹 어플리케이션 서버(WAS) 가 필요없습니다.
개발환경 설정하기 #
Spring Initializr
를 이용한 환경 구성
#
Spring Boot 는 개발환경을 편리하게 설정할 수 있도록 Spring Initializr
라는 웹 도구를 제공합니다.
Spring Initalizr
를 이용하기 위하여
https://start.spring.io 로 접속하세요.
기본 정보를 입력했다면, 우측의 Dependencies
에서 Spring Web
에 대한 의존성을 추가해주세요.
아래 그림처럼 ADD DEPENDENCIES...
버튼을 클릭하세요.
추가할 수 있는 Spring 모듈 목록이 나타나면 Spring Web
을 선택하세요.
이제 설정의 마지막 단계 입니다.
아래쪽에 있는 GENERATE 버튼을 클릭하세요.
결과물로 demo.zip
이라는 파일을 다운로드 받을 수 있습니다.
이 압축파일이 작업공간의 뿌리가 됩니다.
작업 공간 생성하기 #
개발 작업공간으로 정한 디렉터리에 demo.zip
의 압축을 푸세요.
저는 D:/tmp 에 풀었습니다. 즉, 제 작업공간은 D:/tmp/demo
입니다.
IntelliJ IDEA 에서 프로젝트 불러오기 #
File > Open
메뉴를 선택하세요.
작업 공간 디렉터리인 D:\tmp\demo
을 여세요.
다음과 같이 보이신다면 IntelliJ IDEA 에서 프로젝트를 여는데 성공하신 겁니다.
어플리케이션 환경 설정 #
이제 어플리케이션 실행에 필요한 기본 정보를 설정합니다.
설정파일은 src/main/resources/application.properties
입니다.
내장 Tomcat 포트는 8080, 어플리케이션의 이름은 demo 로 설정합니다.
파일의 내용은 다음과 같습니다.
server.port = 8080
application.name = demo
다음 그림은 IDE 에서 설정하는 예시 입니다.
Gradle 빌드 스크립트 확인하기 #
Gradle 빌드 스크립트는 자동으로 생성되므로 수정할 필요는 없습니다.
하지만 향후 개발에 지속적으로 영향을 미치기 때문에 이 글에서는 자동으로 생성된 빌드 스크립트를 간단히 보고 넘어가겠습니다.
Gradle 빌드 스크립트 파일은 프로젝트 루트에 있는 build.gradle
입니다.
자동으로 생성된 빌드스크립트의 내용은 다음과 같습니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.4'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
빌드 스크립트의 내용은 별도로 설명하지 않습니다.
IDE 에서는 다음과 같이 볼 수 있습니다.
코딩 및 실행하기 #
환경설정도 끝났으니 본격적으로 개발에 들어가 보도록 하겠습니다.
소스 코딩하기 #
아래 그림과 같이 com.example.demo.DemoApplication
클래스 소스가 생성되어 있습니다.
클래스 정의 상단에 @RestController
어노테이션을 추가해주세요.
이 어노테이션은 @Controller
와 @ResponseBody
어노테이션이 결합된 것으로, 웹 API 를 보다 편하게 구현할 수 있도록 해줍니다.
doGetHelloWorld() 와 doGetHelloWorldDemo() 메소드를 구현하세요.
doGetHelloWorld() 의 소스코드는 다음과 같습니다.
@GetMapping(value = "/")
public String doGetHelloWorld() {
return "Hello World";
}
@GetMapping
어노테이션은 요청되는 웹 요청 URL 의 상대주소를 의미합니다.
doGetHelloWorld() 는 “http://localhost:8080/” 이 호출되면, 응답으로 “Hello World” 라는 문자열을 전송합니다.
위와 유사하게 doGetHelloWorldDemo() 의 소스코드는 다음과 같습니다.
@GetMapping(value = "/demo")
public String doGetHelloWorldDemo() {
return "Hello World (Demo)";
}
doGetHelloWorldDemo() 는 “http://localhost:8080/demo” 가 호출되면, 응답으로 “Hello World (Demo)” 라는 문자열을 전송합니다.
모든 것이 결합된 전체 소스코드는 다음과 같습니다.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping(value = "/")
public String doGetHelloWorld() {
return "Hello World";
}
@GetMapping(value = "/demo")
public String doGetHelloWorldDemo() {
return "Hello World (Demo)";
}
}
디버그 모드로 실행하기 #
IntelliJ IDEA 에는 실행 모드와 디버그 모드로 어플리케이션을 실행할 수 있습니다.
우리는 개발 중이니 디버그 모드로 실행해 보도록 하겠습니다.
여러가지 사용방식이 있는데, 소스코드에서 main()
메소드를 선택해 실행해 보겠습니다.
다음 그림처럼 소스코드 영역에서 main() 을 선택하고, 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나타납니다.
Debug 'DemoApplication.main()'
메뉴를 선택하세요.
다음 그림과 같이 DemoApplication
어플리케이션이 실행되는 것을 확인할 수 있습니다.
Tomcat 이 8080
포트로 시작되었다는 사실도 확인 할 수 있습니다.
웹브라우저로 테스트 하기 #
마지막으로 어플리케이션이 제대로 작동하는 확인하기 위하여 웹브라우저에서 요청을 날려보도록 하겠습니다.
먼저 http://localhost:8080
으로 요청을 보내면 다음과 같은 결과를 얻을 수 있습니다.
이번에는 http://localhost:8080/demo
로 요청을 날려 보도록 하죠.
다음 그림과 같이 Hello World (Demo)
를 반환하는 것 확인할 수 있습니다.
마무리 #
“Hello World” 출력 프로그램은 언어를 처음 배울때 가장 기초적인 원리를 가르쳐 주는 예제입니다.
이 글에서는 가장 단순한 예제로 웹 API 구현을 시도해 보았습니다.
이 예제가 단순하긴 하지만, 모든 REST API 나 기타 웹 API 를 구현하는 방법은 기본적으로 동일합니다.
Spring Boot 가 이런 구현에 있어 얼마나 강력하고 편리한지 느끼셨으리라 생각합니다.
이런 기술들에 익숙하지 않은 분들이 조금이라도 친숙해지는 계기가 되었으면 좋겠다는 생각을 하며 글을 마칩니다.