Spring-boot-tomcat-deployment
Spring Boot-Tomcatの展開
Spring Bootアプリケーションを使用することにより、warファイルを作成してWebサーバーにデプロイできます。 この章では、WARファイルを作成し、Tomcat WebサーバーにSpring Bootアプリケーションをデプロイする方法を学習します。
Spring Boot Servlet Initializer
従来の展開方法では、Spring Boot Application @ SpringBootApplication クラスで SpringBootServletInitializer クラスを拡張します。 Spring Boot Servlet Initializerクラスファイルを使用すると、サーブレットコンテナを使用して起動時にアプリケーションを構成できます。
JARファイルの展開のためのSpring Boot Applicationクラスファイルのコードは以下のとおりです-
package com.finddevguides.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);
}
}
クラス SpringBootServletInitializer を拡張して、WARファイルの展開をサポートする必要があります。 Spring Boot Applicationクラスファイルのコードは次のとおりです-
package com.finddevguides.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
メインクラスの設定
Spring Bootでは、ビルドファイルで開始するメインクラスを指定する必要があります。 この目的のために、次のコードを使用できます-
Mavenの場合、以下に示すように pom.xml プロパティに開始クラスを追加します-
<start-class>com.finddevguides.demo.DemoApplication</start-class>
Gradleの場合、以下に示すようにbuild.gradleにメインクラス名を追加します-
mainClassName="com.finddevguides.demo.DemoApplication"
パッケージングJARをWARに更新する
次のコードを使用して、パッケージングJARをWARに更新する必要があります-
Mavenの場合、以下に示すように pom.xml にWARとしてパッケージを追加します-
<packaging>war</packaging>
Gradleの場合、以下に示すように build.gradle にアプリケーションプラグインとwarプラグインを追加します-
apply plugin: ‘war’
apply plugin: ‘application’
次に、文字列「Hello World from Tomcat」を返す単純なRest Endpointを作成しましょう。 Restエンドポイントを作成するには、ビルドファイルにSpring Boot Webスターターの依存関係を追加する必要があります。
Mavenの場合、以下に示すコードを使用してpom.xmlにSpring Bootスターター依存関係を追加します-
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Gradleの場合、以下に示すコードを使用して build.gradle にSpring Bootスターターの依存関係を追加します-
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
}
次に、以下に示すコードを使用して、Spring Boot Applicationクラスファイルに単純なRESTエンドポイントを記述します-
package com.finddevguides.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/")
public String hello() {
return "Hello World from Tomcat";
}
}
アプリケーションのパッケージ化
次に、以下に示すようにアプリケーションをパッケージ化するためのMavenおよびGradleコマンドを使用して、TomcatサーバーにデプロイするWARファイルを作成します-
Mavenの場合、 mvn package コマンドを使用して、アプリケーションをパッケージ化します。 次に、WARファイルが作成され、以下のスクリーンショットに示すように、ターゲットディレクトリで見つけることができます-
Mavenパッケージングアプリケーションターゲットディレクトリ
Gradleの場合、アプリケーションをパッケージ化するには、コマンド gradle clean build を使用します。 次に、WARファイルが作成され、 build/libs ディレクトリの下で見つけることができます。 より良い理解のためにここで与えられたスクリーンショットを観察します-
Mavenパッケージングアプリケーションターゲットディレクトリ
Tomcatにデプロイする
次に、Tomcatサーバーを実行し、 webapps ディレクトリの下にWARファイルをデプロイします。 より良い理解のためにここに示されているスクリーンショットを観察します-
Tomcat Web Application Maneger
展開が正常に完了したら、WebブラウザでURL http://localhost:8080/demo-0.0.1-SNAPSHOT/*にアクセスし、以下のスクリーンショットに示すように出力が表示されることを確認します-
Successful Deployment Screenshot
この目的の完全なコードを以下に示します。
*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>com.finddevguides</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<start-class>com.finddevguides.demo.DemoApplication</start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
*build.gradle*
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'war'
apply plugin: 'application'
group = 'com.finddevguides'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
mainClassName = "com.finddevguides.demo.DemoApplication"
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
メインのSpring Bootアプリケーションクラスファイルのコードは以下のとおりです-
package com.finddevguides.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/")
public String hello() {
return "Hello World from Tomcat";
}
}