도구 없이 스프링 부트 프로젝트 만들기
스프링 부트 프로젝트를 만드는데는 여러 가지 자동화된 방법이 있습니다.
Eclipse나 IntelliJ와 같은 코드 에디터에서 제공하는 프로젝트 생성 마법사를 이용할 수 있고, SPRING INITIALIZR 웹사이트에서 생성해준 프로젝트의 압축 파일을 다운로드 받을 수도 있으며, Spring CLI 도구를 이용하여 터미널에서 커맨드 한 줄을 날릴 수도 있습니다.
하지만 스프링 부트를 본격적으로 시작할 분이 아니라면 이런 도구를 설치하는 게 부담스럽거나 번거롭게 느껴질 수 있습니다. 본 포스팅에서는 이러한 도구의 도움없이 아무 것도 없는 상태에서 스프링 부트 프로젝트를 만드는 방법에 대해서 알아보도록 하겠습니다. 의외로 매우 간단하게 5분 내로 스프링 부트 프로젝트를 만들 수 있습니다.
프로젝트 디렉터리 생성
프로젝트 파일들을 담을 새로운 디렉터리를 하나 만듭니다.
$ mkdir -p demo
메이븐 설정
디렉터리 안에 pom.xml
파일을 만들고 메이븐 프로젝트 기본 구조를 입력합니다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- parent 추가 -->
<!-- dependencies 추가 -->
</project>
<!-- parent 추가 -->
부분에 다음 스프링 부트 부모 프로젝트 정보를 입력합니다.
버전 부분운 스프링 부트 웹사이트에서 최신 릴리즈 버전으로 세팅해주시면 됩니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
</parent>
<!-- dependencies 추가 -->
부분에 다음 의존성 정보를 입력합니다.
스프링 부트 부모 프로젝트에서 버전 관리를 해주기 때문에 version
엘리먼트를 생략할 수 있습니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
소스 디렉터리 생성
메이븐이 소스 파일을 인식할 수 있도록 소스 디렉터리를 만들어 줍니다.
$ mkdir -p src/main/java/com/example/demo
애플리케이션 작성
스프링 부트 애플리케이션의 진입점이 되는 클래스를 작성해야 합니다.
@SpringBootApplication
어노테이션을 선언하여 스프링 부트의 자동 설정들이 모두 적용되고, 컴포넌트 스캔이 되도록 해줍니다.
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);
}
}
컨트롤러 작성
간단한 컨트롤러 클래스를 작성해보겠습니다.
GET
방식으로 ping
이라는 문자열을 보내면 pong
이라는 문자열을 받으려 합니다.
@RestController
어노테이션으로 해당 클래스를 REST API 리소스로 선언해주고, @GetMapping
어노테이션으로 해당 메소드가 처리해줄 HTTP 메소드와 패스를 지정해줍니다.
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@GetMapping("/ping")
public String ping() {
return "pong";
}
}
실행
터미널에서 메이븐 커맨드를 실행시켜서 우리가 작성한 웹 애플리케이션을 구동시킵니다.
$ mvn spring-boot:run
테스트
웹 브라우져에서 http://localhost:8080
에 접속하거나, 터미널에서 curl을 이용하여 웹 애플리케이션이 정상적으로 요청에 응답하는지 확인해볼 수 있습니다.
$ curl http://localhost:8080/ping
pong
이상으로 도구 없이 간단하게 스프링 부트 애플리케이션을 만들고 구동까지 해보았습니다. 여기에 추가로 필요한 스프링 부트의 스타터나 외부 라이브러리를 더해나가면서 점점 복잡한 프로젝트를 만들어나가실 수 있습니다.