본문 바로가기

Spring

[SpringBoot] Spring Boot 프로젝트 구성하기

728x90

개요

웹 프로젝트를 개발하게 되면 보통 WAR 파일을 생성하고 WAS(Tomcat, Webtob 등)에 기동하는 방식을 사용하게 될 것 입니다. 그런데 개발을 하다보면 이것을 그냥 실행파일(또는 jar 파일 하나)로 만들 수 없을까 하는 의문이 생기게 됩니다.
Spring Boot라는 프로젝트를 활용하면 해결할 수 있습니다. Spring Boot 내부적으로 Embedded Tomcat을 활용하여 웹서비스를 기동하게 됩니다.

프로젝트 만들기

pom.xml에 Spring Boot 추가하기

관련 라이브러리를 수작업으로 진행할 수 도 있지만 보통의 스프링 프로젝트는 Maven을 이용해서 관리하게 됩니다. (Gradle도 많이 사용하지만 여기서는 Maven만 다루겠습니다)
프로젝트의 pom.xml 파일에 Spring Boot 관련 내용을 추가하면 됩니다. 이때 2가지 방법이 쓰이게 됩니다.

첫째. parent 구조를 활용하기

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.2.RELEASE</version>
</parent>

둘째. dependencyManagement 구조를 활용하기

보통은 첫번째 방법을 활요하지만, 이미 parent 가 있는 경우 또는 다른 이유로 인하여 parent 정의가 불가능 한 경우 두번째 방법을 쓰시면 됩니다.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>1.5.2.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

dependencies 추가하기

pom.xml에 설정이 끝났으면 웹프로젝트 구성을 위하여 spring-boot-starter-web을 의존관계에 추가합니다.

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>


여기 까지 하면 pom.xml 파일의 형태가 아래와 유사할 것 입니다.


<?xml version="1.0" encoding="UTF-8"?>
<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>oofbird.net</groupId>
  <artifactId>springboot</artifactId>
  <version>1.0-SNAPSHOT</version>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>
</project>

프로그램 실행을 위한 main 함수 작성

Spring Boot 어플리케이션은 실행시 기존 자바 어플리케이션과 동일하게 main 함수를 찾게 됩니다. 그 안에서 SpringApplication.run() 이라는 함수를 호출하여 기동을 하게 됩니다.
추가로, 각종 어노테이션이 있지만 @SpringBootApplication 이라고 지정을 하면 기본적인 설정을 진행하게 됩니다. 
Application 이라는 클래스로 정의를 했을 때 다음과 같이 작성이 될 것 입니다.

package net.oofbird.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
  public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }
}

REST 웹 서비스를 위한 Controller 클래스 작성

웹 어플리케이션 기동에 준비가 끝났으니, 실제 서비스를 위한 컨트롤러를 작성하시면 됩니다. 여기서 저는 주소창에서 "/echo/내용"을 입력하면 내용을 출력하도록 작성하였습니다.

package net.oofbird.springboot;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EchoController {
  @RequestMapping(value="echo/{text}", method= RequestMethod.GET)
  public String getEcho(@PathVariable("text") String text) {
    return "echo [" + text + "]";
  }
}

실행하기

기존 웹 프로젝트는 톰캣을 설치하고 프로젝트를 빌드해서 배포했다면, Spring Boot는 단순하게 main 클래스를 실행시키면 됩니다.
IDE의 기능을 이용하여 실행하여도 되고, 또는 "mvn spring-boot:run" 명령을 이용해서 실행해도 됩니다.

mvn spring-boot:run
[INFO] Scanning for projects...
Downloading: https://repo.maven.apache.org/maven2/org/jooq/jooq-codegen-maven/3.9.1/jooq-codegen-maven-3.9.1.pom
Downloaded: https://repo.maven.apache.org/maven2/org/jooq/jooq-codegen-maven/3.9.1/jooq-codegen-maven-3.9.1.pom (3 KB at 1.9 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/jooq/jooq-parent/3.9.1/jooq-parent-3.9.1.pom
.....
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.2.RELEASE)
.....
2017-04-11 01:33:55.273  INFO 7740 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-04-11 01:33:55.273  INFO 7740 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2017-04-11 01:33:55.288  INFO 7740 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms

완료되면 기본 포트인 8080으로 기동이 됩니다. http://127.0.0.1:8080/echo/helloworld로 결과를 확인하시면 됩니다.

 



반응형