Spring Boot | Spring Boot 이란? | Web 어플리케이션 기동

Hello World 수정하기

build.gradle

dependencies {
-   compile 'org.springframework.boot:spring-boot-starter'
+   compile 'org.springframework.boot:spring-boot-starter-web'
}

src/main/java/sample/springboot/Main.java

package sample.springboot;

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

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

src/main/java/sample/springboot/web/HelloController.java

package sample.springboot.web;

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

@RestController
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping(method=RequestMethod.GET)
    public String hello() {
        return "Hello Spring MVC";
    }
}

어플리케이션 실행

Gradle로 실행

$ gradle bootRun
(생략)
> :bootRun

curl으로 테스트하기

$ curl http://localhost:8080/hello
Hello Spring MVC

설명

Web 어플리케이션에 대한 의존성

build.gradle

dependencies {
-   compile 'org.springframework.boot:spring-boot-starter'
+   compile 'org.springframework.boot:spring-boot-starter-web'
}

Web 어플리케이션을 만드는 경우는 spring-boot-starter-web 모듈을 사용한다. 기본적으로 Spring MVC를 사용하여 Web 응용 프로그램을 만들게 된다.

기동 방법 변경

src/main/java/sample/springboot/Main.java

    public static void main(String[] args) {
-       try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
-           ....
-       }
+       SpringApplication.run(Main.class, args);

서버 시작 후 컨테이너가 종료 해 버리므로 try-with-resources 문장은 사용하지 않도록 변경한다.

Spring MVC 컨트롤러 클래스

src/main/java/sample/springboot/web/HelloController.java

@RestController
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping(method=RequestMethod.GET)
    public String hello() {
        return "Hello Spring MVC";
    }
}

Web API의 진입 점(Entry point)이 되는 클래스를 만드는 경우 @RestController을 클래스에 부여한다.
Web API 대신 MVC에서 C가 되는 컨트롤러 원한다면 @Controller 어노테이션을 부여한다.
@RequestMapping에서 경로 및 HTTP 메소드의 매핑을 한다 (대략 JAX-RS와 같은 분위기).

소스 코드