目次


Spring Boot の基礎

Spring Boot を導入して、「そのまま実行」できる Spring アプリケーションを作成する

Comments

Spring Boot は軽量ながらも、Spring ベースのアプリケーションを構成する作業のほとんどを引き受けてくれるフレームワークです。このチュートリアルで、Spring Boot のスターター、見解、実行可能 JAR ファイル構造を使用して、「そのまま実行」できる Spring ベースのアプリケーションを迅速に作成する方法を学んでください。

Spring Boot について簡単に紹介した後、2 つの Spring Boot アプリケーションをセットアップして実行する手順を説明します。一方のアプリケーションは単純な「Hello, World」、もう一方は少々込み入った Spring MVC RESTful Web サービス・アプリケーションです。これらのサンプル・アプリケーションでは Spring Boot バージョン 1.5.2 を使用しています。バージョン 1.5.2 以降を使用することをお勧めしますが、1.5 以降のリリースであれば、サンプル・アプリケーションは問題なく機能するはずです。

前提条件

このチュートリアルを最大限活用するには、Java Development Kit バージョン 8 (JDK 8) を使い慣れている必要があります。また、Eclipse IDE、Maven、および Git の知識も必要です。

チュートリアルの手順に従う前に、以下のソフトウェアがインストールされていることを確認してください。

本題に入る前に、Spring Bootについて簡単に説明しておきます。

Spring Boot の概要

Spring Boot の目標は、構成するのが簡単な Spring アプリケーションを迅速に作成するための一連のツールを提供することです。

問題: Spring を構成するのは大変な作業です!

Spring ベースのアプリケーションを作成したことがあるとしたらご存知だと思いますが、「Hello, World」を完成させるだけでもかなりの構成作業をこなさなければなりません。これは悪いことではありません。Spring は無駄を省いた簡潔なフレームワークのセットであり、これらのフレームワークを正常に連動させるには、慎重に調整された構成が必要です。けれども、この簡潔さには、構成が複雑になるという犠牲が伴います (それとは別に、さらに XML の構成も必要になります)。

解決策: Spring Boot

Spring Boot を導入してください。その理由は、私が説明するよりも、Spring Boot Web サイトの簡潔な説明を読んだほうがよくわかります。

Spring Boot では、本番に対応可能なスタンドアロンの Spring ベースのアプリケーションを簡単に作成して、「そのまま実行」することができます。私たちは Spring プラットフォームとサード・パーティーを私たち自身の主張に基づいた見解で捉えることにより、最小限の手間でアプリケーションの作成に取り掛かれるようにしています。

この説明文が伝えていることは、基本的に、構成作業をほとんど行わずに迅速に Spring アプリケーションを稼働中の状態にできるということです。わずかに必要な構成は、アノテーションという形で行うため、XML は必要になりません。

素晴らしいと思いませんか?けれども、Spring Boot は具体的にどのように機能するのでしょうか?

第一に、Spring Boot は自己主張をします

Spring Boot は見解を持っています。別の言い方をすれば、Spring Boot は合理的なデフォルト値を設定するということです。したがって、開発者は一般的に使用されている値を使って迅速にアプリケーションを作成できます。

例えば、Web コンテナーとしては Tomcat が非常によく使われているため、Spring Boot Web アプリケーションはデフォルトで組み込み Tomcat コンテナーを使用するといった具合です。

第二に、Spring Boot はカスタマイズ可能です

自己主張するフレームワークは、フレームワークの基準とする考え方を変えることができなければ、あまり役に立ちません。Spring Boot アプリケーションは、初期構成でも、開発サイクルの後期の段階でも、好みに合わせて簡単にカスタマイズできます。

例えば、Maven を使用したいとしたら、POM ファイル内の <dependency> で Spring Boot がデフォルトで設定する値を置き換えることで、Maven を使用できます。このチュートリアルの後のほうで、このようなカスタマイズを行う方法を説明します。

Spring Boot を使い始める

スターター

Spring Boot の威力において大きな部分を占めるのは、スターターです。Spring Boot ではスターターを使用することで、開発者が手作業で行わなければならない依存関係の構成作業を最小限に抑えています。Spring Boot を効率的に使用するには、スターターについて理解しておく必要があります。

スターターは基本的に、そのスターターが表すアプリケーションのタイプ固有の依存関係を揃えたものです (Maven POM など)。

すべてのスターターは、spring-boot-starter-XYZ という命名規則を使用します。ここで、XYZ は作成するアプリケーションのタイプです。よく使われている Spring Boot のスターターには、以下があります。

  • spring-boot-starter-web。Spring MVC と、組み込みアプリケーション・コンテナーとして Tomcat を使用した、RESTful Web サービスを作成する場合に使用します。
  • spring-boot-starter-jerseyspring-boot-starter-web の代わりとなるこのスターターでは、Spring MVC ではなく、Apache Jersey を使用しています。
  • spring-boot-starter-jdbc。JDBC 接続をプールする場合に使用するスターターです。Tomcat の JDBC 接続プールの実装がベースとなっています。

このリンク先の Spring Boot スターター・リファレンス・ページに、その他多数のスターターがリストアップされているので、それぞれのスターターの POM と依存関係を調べてください。

自動構成

デフォルトでは、Spring Boot の @EnableAutoConfiguration アノテーションを使用してアプリケーションが自動的に構成されます。自動構成は、クラスパスに指定されている JAR と、Bean がどのように定義されているかに基づいて行われます。

  • Spring Boot は CLASSPATH に指定されている JAR を使用して、特定の自動動作をどのように構成するかについて見解をまとめます。例えば、クラスパスに H2 データベースの JAR が指定されている場合、他の DataSource Bean が一切構成されていなければ、アプリケーションは自動的にインメモリー・データベースを使用して構成されることになります。
  • Spring Boot は、Bean の定義方法に従って、自身を自動的に構成する方法を判断します。例えば、JPA Bean に @Entity アノテーションを設定しておけば、Spring Boot は開発者が persistence.xml ファイルを使用しなくても済むように、自動的に JPA を構成します。

Spring Boot の über jar

Spring Boot の目標は、開発者が「そのまま実行」できるアプリケーションを作成できるようにすることです。そのために、Spring Boot はアプリケーションとその依存関係を 1 つの実行可能 JAR にパッケージ化します。アプリケーションを実行するには、次のようにして Java を起動します。

$ java -jar PATH_TO_EXECUTABLE_JAR/executableJar.jar

Spring Boot の über JAR は新しい概念ではありません。Java にはネストされた JAR をロードする標準的な手段がないことから、開発者はこれまで長年の間、Apache Maven Shade プラグインのようなツールを使用して依存関係のすべてを 1 つにまとめた「shaded」JAR を作成していました。shaded JAR は、アプリケーションのすべての従属 JAR の .class ファイルを格納するだけに過ぎません。けれどもアプリケーションが複雑化して、依存関係が増えてくると、shaded JAR で以下の 2 つの問題が発生することがあります。

  1. 名前の競合。それぞれに異なる JAR に含まれる 2 つのクラスが同じ名前になっているという問題です。
  2. 依存関係のバージョンの問題。2 つの JAR が同じ依存関係の異なるバージョンを使用するという問題です。

Spring Boot はこれらの問題を解決するために、JAR 自体が über JAR 内でネストされる、特殊な JAR レイアウトを定義しています。このレイアウトに従って、Spring ツールのサポート (spring-boot-maven プラグインなど) で実行可能 über JAR を作成するという方法です (shaded JAR を使用する場合と違い、.class ファイルのパッケージ化を解除して再パッケージ化するだけではありません)。実行可能 JAR を実行すると、Spring Boot は特殊なクラス・ローダーを使用して、ネストされた JAR 内からのクラスのロードを処理します。

Hello, World!

これから、Spring Boot を直接操作する方法を説明します。このセクションに記載する例は、HelloSpringBoot という単純なサンプル・アプリケーションに基づいています。私と一緒に、このサンプル・アプリケーションの開発手順に従うことをお勧めしますが、お望みであれば、この手順を省いて GitHub からアプリケーション・コードをダウンロードすることもできます。

早速手順を開始して、新しい Maven プロジェクトを作成しましょう!

1

Maven プロジェクトを作成する

Eclipse で、「File (ファイル)」 > 「New Project (新規プロジェクト)」ダイアログを表示し、「Maven」 > 「Maven Project (Maven プロジェクト)」の順に選択します (図 1 を参照)。

図 1. Maven プロジェクトを選択する
Eclipse の「New Project (新規プロジェクト)」ダイアログで Maven プロジェクトを選択する操作を示す画面のスクリーンショット
Eclipse の「New Project (新規プロジェクト)」ダイアログで Maven プロジェクトを選択する操作を示す画面のスクリーンショット

「Next (次へ)」をクリックします。これによって表示されるダイアログで、同じく「Next (次へ)」をクリックします。

次に、新規 Maven プロジェクトのアーキタイプを選択するよう促されるので、「maven-archetype-quickstart」を選択します (図 2 を参照)。

図 2. Maven クイックスタート・アーキタイプを選択する
「New Project (新規プロジェクト)」ダイアログで Maven クイックスタート・アーキタイプを選択する操作を示す画面のスクリーンショット
「New Project (新規プロジェクト)」ダイアログで Maven クイックスタート・アーキタイプを選択する操作を示す画面のスクリーンショット

「Next (次へ)」をクリックします。

最後に、図 3 に示すように成果物の設定を入力します。

図 3. Maven 成果物の設定を選択する
「New Project (新規プロジェクト)」ダイアログで Maven アーキタイプの設定を選択する操作を示す画面のスクリーンショット
「New Project (新規プロジェクト)」ダイアログで Maven アーキタイプの設定を選択する操作を示す画面のスクリーンショット

この HelloSpringBoot アプリケーションには、以下の設定を使用しています。

  • Group Id (グループ ID): com.makotojava.learn
  • Artifact Id (成果物 ID): HelloSpringBoot
  • Version (バージョン): 1.0-SNAPSHOT
  • Package (パッケージ): com.makotojava.learn.hellospringboot

「Finish (完了)」をクリックしてプロジェクトを作成します。

2

POM を作成する

「New Project (新規プロジェクト)」ウィザードによって作成された POM を、リスト 1 に示す内容に変更します。

リスト 1. HelloSpringBoot の POM ファイル
                <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.makotojava.learn</groupId>
                    <artifactId>HelloSpringBoot</artifactId>
                    <version>1.0-SNAPSHOT</version>
                    <packaging>jar</packaging>
                    <name>HelloSpringBoot</name>
                    <url>http://maven.apache.org</url>
                    <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>
                    <properties>
                    	<java.version>1.8</java.version>
                    </properties>
                    <build>
                    	<plugins>
                    		<plugin>
                    			<groupId>org.springframework.boot</groupId>
                    			<artifactId>spring-boot-maven-plugin</artifactId>
                    		</plugin>
                    	</plugins>
                    </build>
                </project>

リスト 1 で強調表示されている行に注目してください。

行 10 ~ 14 に示されている、Spring Boot の親 POM を指定する <parent> 要素には、共通コンポーネントの定義が含まれています。したがって、共通コンポーネントの定義を手作業で構成する必要はありません。

行 16 ~ 19 には、Spring Boot の spring-boot-starter-web スターターに対する <dependency> が示されています。この要素が Spring Boot に対し、アプリケーションが Web アプリケーションであることを伝え、それに応じて Spring Boot が構成に関する見解をまとめます。

リスト 25 ~ 20 では、Maven に対し、spring-boot-maven-plugin プラグインを使用して Spring Boot アプリケーションを生成するように指示しています。

以上のとおり、構成はほんのわずかです。XML は関わってきません。残りの構成には、Java アノテーションを使用します。

Spring Boot の見解に関する詳細

先に進める前に、Spring Boot の見解についてもう少し詳しく説明させてください。Spring Boot が spring-boot-starter-web のようなスターターを使用して構成に関する見解をまとめる方法を説明しておくことが重要だと思うからです。

サンプル・アプリケーションの HelloSpringBoot で使用している Spring Boot のスターターは、spring-boot-starter-web です。このスターターに基づき、Spring Boot はアプリケーションを構成するコンポーネントについて以下の見解をまとめました。

  • Tomcat 組み込み Web サーバー・コンテナー
  • オブジェクト・リレーショナル・マッピング (ORM) 用の Hibernate
  • JSON バインディング用の Apache Jackson
  • REST フレームワーク用の Spring MVC

自己主張という点に関して言うと、Spring Boot を弁護するわけではありませんが、以上のコンポーネントは最もよく使われている Web アプリケーションでデフォルトにより設定されるものです。私が知っている限り、常にこれらのコンポーネントが使用されています。

ただし、前にも言ったように、Spring Boot はカスタマイズすることができます。別のテクノロジー・スタックを使用したい場合は、Spring Boot のデフォルト設定を簡単にオーバーライドできます。

そこで、単純なカスタマイズの例を説明します。

<parent> を失くす

POM に <parent> 要素がすでに含まれている場合、あるいはこの要素を使用したくない場合について考えてみてください。<parent> 要素がなくても Spring Boot は機能するでしょうか?

Spring Boot は <parent> 要素がなくても機能しますが、それには次の 2 つのステップを実行する必要があります。

  1. 手作業で依存関係 (バージョンを含む) を追加します。
  2. リスト 2 に記載する構成スニペットを spring-boot-maven-plugin に追加します。
    リスト 2. <parent> POM 要素を使用しない場合は、repackage goal を指定する
                	<build>
                		<plugins>
                			<plugin>
                				<groupId>org.springframework.boot</groupId>
                				<artifactId>spring-boot-maven-plugin</artifactId>
                				<version>1.5.2.RELEASE</version>
                				<executions>
                					<execution>
                						<goals>
                							<goal>repackage</goal>
                						</goals>
                					</execution>
                				</executions>
                			</plugin>
                		</plugins>
                	</build>

重要な点として、<parent> 要素は Maven の巧みな処理の大部分を担当するので、この要素を使用しない正当な理由がある場合には、慎重に事を進める必要があります。spring-boot-maven-plugin には、必ず repackage goal の実行を追加してください。その理由については、このリンク先のページで説明しています

これで、プロジェクトを構成してカスタマイズするところまで完了しました。次は、実行可能ファイルをビルドします。

3

実行可能 JAR をビルドする

Maven を使用して実行可能 JAR をビルドするには、次の 2 つの方法があります。

  1. Eclipse 内で Maven ビルドを実行します。
  2. コマンド・ラインから Maven ビルドを実行します。

これから、この両方の方法を説明します。

Eclipse 内でビルドする

Eclipse 内で Maven ビルドを実行するには、POM ファイルを右クリックして「Run As (実行)」 > 「Maven Build (Maven ビルド)」の順に選択します。「Goals (ゴール)」テキスト・フィールドに clean および package と入力してから、「Run (実行)」ボタンをクリックします。

図 4. Eclipse 内での実行可能 JAR のビルド
Eclipse 内で実行可能 JAR をビルドする操作を示すスクリーンショット
Eclipse 内で実行可能 JAR をビルドする操作を示すスクリーンショット

コンソール・ビューに、ビルドが正常に完了したことを伝えるメッセージが表示されるはずです。

.
.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.440 s
[INFO] Finished at: 2017-04-16T10:17:21-05:00
[INFO] Final Memory: 30M/331M
[INFO] ------------------------------------------------------------------------

コマンド・ラインからビルドする

コマンド・ラインから Maven ビルドを実行するには、Mac ターミナル・ウィンドウまたは Winsows コマンド・プロンプトを開き、HelloSpringBoot プロジェクト・ディレクトリーにナビゲートして、以下のコマンドを実行します。

mvn clean package

ターミナル・ウィンドウまたはコマンド・プロンプトに、ビルドが正常に完了したことを伝えるメッセージが表示されるはずです。

                $ cd HelloSpringBoot
                $ pwd
                /Users/sperry/home/HelloSpringBoot
                $ mvn clean package
                .
                .
                [INFO] ------------------------------------------------------------------------
                [INFO] BUILD SUCCESS
                [INFO] ------------------------------------------------------------------------
                [INFO] Total time: 2.440 s
                [INFO] Finished at: 2017-04-16T10:17:21-05:00
                [INFO] Final Memory: 30M/331M
                [INFO] ------------------------------------------------------------------------
                $

これで、実行可能 JAR を実行する準備が整いました。

4

実行可能 JAR を実行する

前のステップでビルドした実行可能 JAR を実行するには、Mac ターミナル・ウィンドウまたは Winsows コマンド・プロンプトを開き、HelloSpringBoot プロジェクト・フォルダーにナビゲートして、以下のコマンドを実行します。

java -jar target/HelloSpringBoot-1.0-SNAPSHOT.jar

ここで、target はビルドのデフォルト出力ディレクトリーです。別のディレクトリーを構成してある場合は、上記のコマンド内で該当するディレクトリーを使用してください。

Spring Boot からの出力には、以下のリストに示すようなテキスト・ベースの「スプラッシュ画面」(行 2 ~ 7) も表示されます。ここには、アプリを実行すると表示される出力内容を大まかに把握できるよう、数行の出力だけを示しています。

$ java -jar target/HelloSpringBoot-1.0-SNAPSHOT.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.2.RELEASE)
2017-04-15 17:46:12.919  INFO 20096 --- [           main] c.makotojava.learn.hellospringboot.App   : Starting App v1.0-SNAPSHOT on Ix.local with PID 20096 (/Users/sperry/home/projects/learn/HelloSpringBoot/target/HelloSpringBoot-1.0-SNAPSHOT.jar started by sperry in /Users/sperry/home/projects/learn/HelloSpringBoot)
2017-04-15 17:46:12.924 DEBUG 20096 --- [           main] c.makotojava.learn.hellospringboot.App   : Running with Spring Boot v1.5.2.RELEASE, Spring v4.3.7.RELEASE
.
.
2017-04-15 17:46:15.221  INFO 20096 --- [           main] c.makotojava.learn.hellospringboot.App   : Started App in 17.677 seconds (JVM running for 18.555)

アプリケーションが正常に起動されると、Spring Boot からの最後の出力行に「Started App (アプリが起動しました)」という言葉が示されます。次は、アプリケーションを実際に使用する方法を説明します。

5

アプリを使用する

HelloSpringBoot には、REST メソッドが 1 つだけあります。このメソッドを実行するには、ブラウザーを開いて以下の URL にアクセスします。

http://localhost:8080/hello
図 5. こんにちは、Spring Boot!
HelloSpringBoot Web アプリケーションのスクリーンショット
HelloSpringBoot Web アプリケーションのスクリーンショット

「Hello, All your base are belong to us (君達の基地はすべて我々がいただいた)」(Zero Wing というビデオ・ゲームへのオマージュ) というテキストが表示されたら、アプリケーションは正常に機能しています!

Spring Boot の見解を変更する

Spring Boot の見解は、最初にアプリケーションを構成するときに指定する Spring Boot を含め、POM の内容に基づいています。作成する対象のアプリケーションのタイプについて見解をまとめた後、Spring Boot は一連の Maven 依存関係を取り込みます。図 4 に、Spring Boot が Eclipse 内にセットアップする Maven 依存関係の一部を示します。これらの依存関係は、POM の内容と、HelloSpringBoot アプリケーションに指定したスターターに基づいています。

図 6. HelloSpringBoot の初期依存関係
HelloSpringBoot にデフォルトで構成される依存関係
HelloSpringBoot にデフォルトで構成される依存関係

Tomcat がデフォルトの組み込み Web サーバー・コンテナーですが、ここで、Tomcat ではなく Jetty を使用するとします。その場合、POM 内の <dependencies> セクションを変更するだけで、Jetty を使用することができます (リスト 3 の行 5 ~ 15 を、リスト 1 の行 19 に貼り付けるだけです)。

リスト 3. Tomcat ではなく Jetty を使用するために POM に加える変更内容
            	<dependencies>
            		<dependency>
            			<groupId>org.springframework.boot</groupId>
            			<artifactId>spring-boot-starter-web</artifactId>
            			<exclusions>
            				<exclusion>
            					<groupId>org.springframework.boot</groupId>
            					<artifactId>spring-boot-starter-tomcat</artifactId>
            				</exclusion>
            			</exclusions>
            		</dependency>
            		<dependency>
            			<groupId>org.springframework.boot</groupId>
            			<artifactId>spring-boot-starter-jetty</artifactId>
            		</dependency>
            	</dependencies>

以下の図で、(リスト 3 の行 5 ~ 10 により) Tomcat に対する Maven の依存関係が消され、Jetty に対する依存関係で置き換えられていることに注目してください。

図 7. HelloSpringBoot のカスタマイズした依存関係
HelloSpringBoot 用にカスタマイズした依存関係の構成
HelloSpringBoot 用にカスタマイズした依存関係の構成

実際には、1 つのスクリーンショットには収まりきれないほどの Jetty 依存関係がありますが、すべて揃っていることは確かです。Tomcat 依存関係はすべて消えています。自分で試して、結果を確認してください!

Hello, Galaxy!

単純なサンプル・アプリケーションは上手くいきましたが、Spring Boot はそれよりも遥かに有能です。このセクションでは、Spring MVC RESTful Web アプリケーションを使用して Spring Boot の能力を試す方法を説明します。そのために、最初に SpringBootDemo という新しいサンプル・アプリケーションをセットアップします。

SpringBootDemo

SpringBootDemo は、単純な Spring をベースとした oDoT という名前の POJO アプリケーションを格納する Spring Boot ラッパーです (oDoT は、ToDo を逆さにした名前です)。ここでは、単純な Hello, World よりも複雑なアプリケーションを開発するプロセスを案内したいと思います。また、既存のアプリケーションを Spring Boot でラップする方法も説明します。

SpringBootDemo をセットアップして実行するために、以下の 3 つのステップを行います。

  1. GitHub からコードを入手します。
  2. 実行可能 JAR をビルドして実行します。
  3. SoapUI を使用してアプリケーションにアクセスします。

このプロセスの各ステップを案内するためのビデオを制作しました。遠慮なく、今すぐビデオを見てください。

1

コードを入手する

まず始めに、2 つのプロジェクトをそれぞれの GitHub リポジトリーから複製する必要があります。一方の odotCore というプロジェクトには、アプリケーションのビジネス・ロジックが含まれています。このアプリケーションは、Spring ベースの POJO アプリケーションとして作成されたものです。もう一方の SpringBootDemo というプロジェクトは、odotCore を格納する Spring Boot のアプリケーション・ラッパーです。

odotCore リポジトリーを複製するには、Mac のターミナル・ウィンドウまたは Windows のコマンド・プロンプトを開き、目的のコードが置かれているルート・ディレクトリーにナビゲートして、以下のコマンドを実行します。

git clone https://github.com/makotogo/odotCore

SpringBootDemo リポジトリーを複製するには、以下のコマンドを実行します。

git clone https://github.com/makotogo/SpringBootDemo

この 2 つのプロジェクトは、アプリケーションのルート・ディレクトリー直下のサブディレクトリーに格納されていることに注意してください。次は、複製したコードをワークスペースにインポートします。

2

コードを Eclipse にインポートする

「File (ファイル)」 > 「Import... (インポート...)」にナビゲートして、「Maven」 > 「Existing Maven Projects (既存の Maven プロジェクト)」の順に選択します。

次に表示されるダイアログで、「Browse (参照)」ボタンを使ってルート・ディレクトリーにナビゲートします。以下の図に示すように、前のステップで複製した両方のプロジェクトがダイアログに表示された状態にしてください。

図 8. Maven プロジェクトのインポート
「Import Maven Projects (Maven プロジェクトのインポート)」ダイアログのスクリーンショット
「Import Maven Projects (Maven プロジェクトのインポート)」ダイアログのスクリーンショット

「Finish (完了)」をクリックしてプロジェクトを Eclispe ワークスペースにインポートします。次は、実行可能 JAR をビルドします。

3

実行可能 JAR をビルドする

SpringBootDemo を作成するには、odotCore と SpringBootDemo の両方のプロジェクトをビルドする必要があります。これらのプロジェクトは、HelloSpringBoot アプリケーションで行ったように、コマンド・ラインからビルドすることもできますが、ここでは Eclipse を使用してビルドする方法を説明します。

Eclipse で、odotCore プロジェクトを右クリックします。「Run As (実行)」 > 「Maven Build (Maven プロジェクト)」の順に選択し、「Goals (ゴール)」として clean および install と入力します。install ゴールにより、odotCore-1.0-SNAPSHOT.jar JAR ファイルがローカルの Maven リポジトリーにインストールされることになります。SpringBootDemo の Maven ビルドを実行する際には、このローカル・リポジトリーから JAR ファイルで依存関係として取り込むことができます。

odotCore Maven ビルドが正常に実行された後、SpringBootDemo プロジェクトを右クリックして「Run As (実行)] > 「Maven Build (Maven ビルド)」の順に選択し、「Goals (ゴール)」として clean および package と入力します。

SpringBootDemo のビルドが正常に実行された後、コマンド・ラインから SpringBootDemo の über JAR を実行できます。

4

実行可能 JAR を実行する

Mac のターミナル・ウィンドウまたは Windows のコマンド・プロンプトから、SpringBootDemo ディレクトリーにナビゲートします。ビルドの出力ディレクトリーが target (これがデフォルトです) に設定されているという前提で、以下のコマンドを実行します。

java -jar target/SpringBootDemo-1.0-SNAPSHOT.jar

Spring Boot がアプリケーションを実行する様子を厳粛な気持ちで眺めてください。「App Started (アプリが起動しました)」というテキストが表示された後は、アプリケーションの使用を開始できます。

5

アプリを使用する

アプリケーションが正常に機能していることを確認するために、簡単なスモーク・テストとして、ブラウザー・ウィンドウを開いて以下の URL を入力します。

http://localhost:8080/CategoryRestService/FindAll

上記の URL によって CategoryRestServiceFindAll メソッドにアクセスすると、データベース内に格納されているすべての Category オブジェクトが JSON フォーマットで返されるはずです。

図 9. ブラウザーから SpringBootDemo にアクセスする
ブラウザーから SpringBootDemo にアクセスする操作を示すスクリーンショット
ブラウザーから SpringBootDemo にアクセスする操作を示すスクリーンショット

SoapUI を使ってアプリを使用することもできます。ここでその方法をデモすることはしませんが、このチュートリアルのビデオで、そのプロセスを案内しています。

表 1 に、SpringBootDemo のサービスと、各サービスに含まれているメソッドを記載します。

表 1. oDoT (SpringBootDemo) のサービスおよびメソッド
サービスメソッドHTTP メソッドサンプル URL @ http://localhost:8080
CategoryFindAllGET/CategoryRestService/FindAllDB 内のすべての Category オブジェクトを検出します。
CategoryFindByIdGET/CategoryRestService/FindbyId/1ID の値が 1 の Category オブジェクトを検出します。
CategoryFindByIdGET/CategoryRestService/FindbyName/MY_CATEGORY名前の値が「MY_CATEGORY」の Category オブジェクトを検出します。
CategoryAddPUT/CategoryRestService/Add指定された Category オブジェクト (リクエスト本体の中で JSON ペイロードとして指定されたもの) を DB に追加します。戻り値: 追加された Category オブジェクト (レスポンス本体の中で JSON として返されます)。
CategoryUpdatePOST/CategoryRestService/Update指定された Category オブジェクト (リクエスト本体の中で JSON ペイロードとして指定されたもの) を DB 内で更新します。戻り値: 更新のステータスを示す文字列メッセージ。
CategoryDeleteDELETE/CategoryRestService/Delete指定された Category オブジェクト (リクエスト本体の中で JSON ペイロードとして指定されたもの) を DB から削除します。戻り値: 削除のステータスを示す文字列メッセージ。
ItemFindAllGET/ItemRestService/FindAllDB 内のすべての Item オブジェクトを検出します。
ItemFindByIdGET/ItemRestService/FindbyId/1ID の値が 1 の Item オブジェクトを検出します。
ItemFindByIdGET/ItemRestService/FindbyName/TODO_ITEM_1名前の値が「TODO_ITEM_1」の Item オブジェクトを検出します。
ItemAddPUT/ItemRestService/Add指定された Item オブジェクト (リクエスト本体の中で JSON ペイロードとして指定されたもの) を DB に追加します。戻り値: 追加された Item オブジェクト (レスポンス本体の中で JSON として返されます)。
ItemUpdatePOST/ItemRestService/Update指定された Item オブジェクト (リクエスト本体の中で JSON ペイロードとして指定されたもの) を DB 内で更新します。戻り値:更新のステータスを示す文字列メッセージ。
ItemDeleteDELETE/ItemRestService/Delete指定された Item オブジェクト (リクエスト本体の中で JSON ペイロードとして指定されたもの) を DB から削除します。戻り値: 削除のステータスを示す文字列メッセージ。

コードを調べ、いろいろと手を加えてみて、Spring Boot がどのように機能するか感覚をつかんでください。

まとめ

このチュートリアルでは、Spring Boot によって解決される問題を紹介し、Spring Boot の仕組みについてほんの少々説明しました。その後、HelloSpringBoot という単純な Spring Boot アプリケーションをセットアップして実行するまでの手順を案内し、続いて Spring Boot を使用した Spring MVC RESTful Web サービス・アプリケーションを作成して使用する方法を説明しました。

この出発点から、どの方向へ向かいますか?


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology, Open source
ArticleID=1050383
ArticleTitle=Spring Boot の基礎
publish-date=09282017