반응형

코드 작성

build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE'
    }
}

apply plugin: 'war'
apply plugin: 'spring-boot'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

repositories {
    mavenCentral()
}

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

war {
    baseName = 'spring-boot-war'
}
  • war 플러그인을 로드한다.
  • 기본적으로 내장 서버로 사용하는 Tomcat의 의존관계를 providedCompile로 변경한다.

Main.java

package sample.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

@SpringBootApplication
public class Main extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Main.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}
  • main 메소드를 정의하고 클래스는 다음과 같이 수정한다.
    • SpringBootServletInitializer를 상속한다.
    • configure (SpringApplicationBuilder)을 대체한다.

SampleResource.java

package sample.springboot;

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

@RestController
@RequestMapping("/sample")
public class SampleResource {

    @RequestMapping(method=RequestMethod.GET)
    public String hello() {
        return "Hello Spring Boot!!";
    }
}
  • 테스트 용 리소스 클래스.

동작 확인

war을 빌드한다.

$ gradle war

build/libs 아래 spring-boot-war.jar가 출력되므로 Tomcat에 디플로이한다.

curl으로 동작 확인

$ curl http://localhost:8080/spring-boot-war/sample
Hello Spring Boot!!

비교적 간단히 war 파일을 만들 수 있다.

참고


반응형

+ Recent posts