Logo

도구 없이 스프링 부트 프로젝트 만들기

스프링 부트 프로젝트를 만드는데는 여러 가지 자동화된 방법이 있습니다.

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

이상으로 도구 없이 간단하게 스프링 부트 애플리케이션을 만들고 구동까지 해보았습니다. 여기에 추가로 필요한 스프링 부트의 스타터나 외부 라이브러리를 더해나가면서 점점 복잡한 프로젝트를 만들어나가실 수 있습니다.