トップ 基礎知識 Spring Bootとは

Spring Bootとは―マイクロサービス開発用Javaフレームワーク

Spring Bootとは、オープンソースのJavaベースのフレームワークです。マイクロサービスの開発に使用されます。

▲記事トップへ

目次

この記事の目次です。

1. Spring Bootとは
2. 特徴
3. Spring Boot CLI
4. Spring Bootプロジェクトの生成(スペルはInitializerではなくInitializr)
5. Tomcatにデプロイして動作させる方法
6. SpringBootのWebアプリケーションのコンテキストパス

更新履歴

1. Spring Bootとは

Spring Bootとは、オープンソースのJavaベースのフレームワークです。マイクロサービスの開発に使用されます。

マイクロサービス

マイクロサービスは、開発者がサービスを独立して開発およびデプロイできるようにするアーキテクチャです。 実行されている各サービスには独自のプロセスがあり、これによってビジネス・アプリケーションをサポートするための軽量モデルが実現されます。

詳細

関連技術

Spring Bootは、Java、Spring、MavenおよびGradle、RESTfulなWebサービス、などの関連技術が背景にあります。 導入を検討する際はこれらの知識を身に着けておく必要があります。

Maven

Apache Mavenは、Apache Antに代わるものとして作られたJava用プロジェクト管理ツールでです。

詳細

2. 特徴

Spring Bootの特徴は、以下が挙げられます。

3. Spring Boot CLI

Spring Boot CLIはコマンドラインツールで、Groovyスクリプトを実行することができます。 Spring Bootコマンドラインインターフェイスを使用してSpring Bootアプリケーションを作成できます。 アプリケーションは、コマンドプロンプトで作成、実行、テストできます。

ダウンロード

Spring SoftwareリポジトリからSpring CLIディストリビューションをダウンロードできます。
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-manual-cli-installation

たとえば、2.6.0の場合は以下のURLです。
https://repo.spring.io/ui/native/snapshot/org/springframework/boot/spring-boot-cli/2.6.0-SNAPSHOT

ダウンロードするファイルは以下のようなURLです。
https://repo.spring.io/ui/native/snapshot/org/springframework/boot/spring-boot-cli/2.6.0-SNAPSHOT/spring-boot-cli-2.6.0-20211117.110917-438-bin.zip

インストール

ダウンロード後、アーカイブファイルを解凍し、install.txtファイルに記載されている手順に従います。ただし、環境設定は必要ありません。

Windowsの場合、コマンドプロンプトでSpring Boot CLIのbinディレクトリに移動し、「spring –-version」コマンドを実行して、spring CLIが正しくインストールされていることを確認します。 コマンドを実行すると、次のようなSpring CLIのバージョンが表示されます。

Groovy

Groovyは、Javaプラットフォーム上で動作する動的プログラミング言語です。 読み方は「グルービー」です。

Groovyの特徴

Javaとの直接的な連携が特徴です。 例えばGroovyからすべてのJava SE APIや、Javaで書かれた任意のサードパーティ製のコンパイル済みのライブラリなどを呼び出すことができきます。 Javaと同様にC言語などで書かれたネイティブメソッドも呼び出すことができます。

Groovyで簡単なアプリケーションを実行してみる

Rest Endpointスクリプトを含む単純なgroovyファイルを作成し、スプリングブートCLIを使用してgroovyファイルを実行します。

groovyファイルの作成

以下のコードを記述したgroovyファイルをhello.groovyという名前で保存します。

@Controller
class Example {
   @RequestMapping("/")
   @ResponseBody
   public String hello() {
      "Hello Spring Boot"
   }
}

groovyファイルを実行

コマンドプロンプトで「spring run <hello.groovyのパス>」を実行します。

ブラウザで表示確認

ブラウザで「http://localhost:8080」にアクセスすると「Hello Spring Boot」と表示されます。

4. Spring Bootプロジェクトの生成(スペルはInitializerではなくInitializr)

WebフォームのSpring Initializrを利用してSpring Bootアプリケーションのひな型を作成ことができます。

www.start.spring.ioにアクセス

まずはSpring InitializrのWebページ(www.start.spring.io)にアクセスします。

Spring InitializrのWebページ(www.start.spring.io)

必要事項の入力

ビルド、Spring Bootのバージョンとプラットフォームを選択し、アプリケーションを実行するために、グループ、アーティファクト、および必要な依存関係を指定する必要があります。

ダウンロード

必要事項を入力して、[Generate Project] ボタンをクリックすると、zipファイルがダウンロードできます。

解凍

たとえば、Maven Project、Java、2.6.1、Jar、Java 8を選択してダウンロードしたプロジェクトを解凍すると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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</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>

demo/src/main/java/com/example/demo/の下にDemoApplication.javaがあり、mainメソッドが記述されています。

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);
	}

}

このクラスには、@SpringBootApplicationというアノテーションがあります。 これは、起動するSpring Bootアプリケーションのエントリ・ポイントを指定しています。

Restエンドポイントを記述する

Spring BootアプリケーションのメインクラスファイルにHello Worldを返すRestエンドポイントを記述してみます。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

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

	@RequestMapping(value = "/")
	public String hello() {
		return "Hello World";
	}
}

まず、クラスの先頭に@RestControllerアノテーションを追加し、次に、@RequestMappingアノテーションを使用してRequest URIメソッドを作成します。 そして、Request URIメソッドは「Hello World」という文字列を返すようにします。

pom.xmlの編集

上記をコンパイルするためには依存するクラスを取り込む必要があります。 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

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

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

実行可能なJARファイルの作成

コマンドプロンプトでMavenコマンドを使用して、Spring Bootアプリケーションを実行する実行可能なJARファイルを作成します。

mvn clean install

JARファイルの実行

demoのtarget下もしくはインストール先にコピーされたJARファイル(例 demo-0.0.1-SNAPSHOT.jar)を実行します。

java -jar <JARファイル>

ブラウザで表示確認

ブラウザで「http://localhost:8080」にアクセスすると「Hello World」と表示されます。

5. Tomcatにデプロイして動作させる方法

Spring Bootアプリケーションを使用すると、warファイルを作成してWebサーバーにデプロイできます。 ここでは、WARファイルを作成し、TomcatのWebサーバーにSpring Bootアプリケーションをデプロイする方法について説明します。

Tomcatとは

このページでは、Tomcatとはどのようなものか、簡単に解説しています。

詳細

Javaファイル

Javaファイルのサンプルです。

package com.example.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";
	}
}

pow.xml

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<packaging>war</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>

		<start-class>com.example.demo.DemoApplication</start-class>

	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

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

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

WARファイルの作成

mvn packageでWARファイルが生成できます。

mvn package

targetディレクトリにWARファイルが生成されます。

Tomcatにデプロイ

TomcatのwebappsディレクトリにできたWARファイル(例 demo-0.0.1-SNAPSHOT.war)を配置します。

動作確認

Tomcatを起動(もしくは再起動)して、ブラウザで「http://localhost:8080/demo-0.0.1-SNAPSHOT/」というようなURLでアクセスすると「Hello World from Tomcat」と表示されます。

6. SpringBootのWebアプリケーションのコンテキストパス

SpringBootのWebアプリケーションのコンテキストパスは、application.propertiesで指定できます。

server.servlet.context-path=<コンテキストパス>

コンテキストパス(contextpath)

コンテキストパス(contextpath)についてまとめています。

詳細

更新履歴

この記事の更新履歴です。

戻る

当サイトについて

Apache Tomcat

Apache HTTP Server

JSP/Servlet

基礎知識

アプリケーションコンテキスト / コンテキスト / コンテキストパス / コンテキスト名.xml / コンテキストルート / サーブレット / マイクロサービス / ルート

appBase属性 / ApplicationContext / getContextPath / JSP / Maven / PageContext / root / server.xml / Servlet / Spring Boot / Tomcat

サイト内のページ