このサイトには Spring に関する数千ページ以上の膨大なドキュメントがありますが、Spring Boot やその他の Spring プロジェクトを使い始めようとしている場合は、まず、この入門セクションを読むことから始めましょう。他のバージョンはバージョン別ドキュメント一覧を参照してください。このセクションでは、Spring Boot の導入とインストール手順について説明します。次に、最初の Spring Boot アプリケーションを構築する手順を説明し、その過程でいくつかの基本原則を説明します。
1. Spring Boot の導入
Spring Boot とは、設定がほとんど不要で Spring と外部ライブラリを利用でき、規約に従うことにより Spring ベースのアプリケーションを簡単に作成できる事実上標準の Java フレームワークです。
Web アプリケーションの場合、Tomcat なしで java -jar
で起動できる Tomcat 組み込みの Java Web アプリケーション jar ファイルとしてパッケージングできます。もちろん、従来の Tomcat などのサーブレットコンテナーにデプロイ可能な war ファイルを作成することもできます。
主なゴールは次のとおりです。
すべての Spring 開発に、非常に高速で広くアクセス可能な入門体験を提供します。
すぐに使用でき、要件がデフォルトと異なる場合でもすぐに対応できます。
大規模なクラスのプロジェクトに共通のさまざまな非機能機能(組み込みサーバー、セキュリティ、メトリクス、ヘルスチェック、外部化された設定など)を提供します。
コード生成や XML 構成は一切不要です。
2. システム要件
Spring Boot 2.7.8 ( バージョン別サポート期間 ) には Java 8 が必要で、Java 19 まで互換性があります。また依存関係管理メカニズムにより Spring Framework 5.3.25 ( バージョン別サポート期間 ) 以上が自動的に使用されます。
次のビルドツールのサポートがあり、デフォルトでは gradle が使用されます。
ビルドツール | バージョン |
---|---|
3.5+ | |
6.8.x、6.9.x,, 7.x |
3. Spring Boot のインストール
Eclipse STS、IntelliJ IDEA、VSCode Auto Config を使用する場合、以降に示すインストール手順は不要です。Spring Initializr クイックスタートや簡単な Web 画面の作成を試してみてください。コマンドラインを使用する場合は、次のコマンドを使用して現在インストールされている Java を確認する必要があります。
$ java -version
コマンドラインで開発する場合は、以降の手順に従ってください。
3.1. Java 開発者向けのインストール手順
Spring Boot は特別なツールの統合を必要としないため、クラスパスに適切な spring-boot-*.jar
ファイルを含めることで、標準 Java ライブラリと同じ方法で使用できます。また、Spring Boot アプリケーションには特別なものはないため、他の Java プログラムと同様に Spring Boot アプリケーションを実行およびデバッグできます。
Spring Boot の jar を手動でダウンロードしてプロジェクト内に配置することもできますが、依存性管理が困難になるため、通常はサポートするビルドツール(Gradle や Maven など)を使用することをお勧めします。Eclipse STS や IntelliJ IDEA のような IDE の場合は Gradle や Maven が含まれているため、IDE 付属のデフォルトのバージョンを使用する場合は、後述の Gradle や Maven のインストール不要です。また、異なるバージョンが必要な場合でも、Spring Initializr で作成した Spring Boot プロジェクトには gradlew や mvnw が含まれているため、Gradle や Maven のインストールは必要ありません。
3.1.1. Maven のインストール
Spring Boot は Apache Maven 3.3 以上と互換性があります。Maven をまだインストールしていない場合は、maven.apache.org (英語) の手順に従ってください。
多くのオペレーティングシステムでは、Maven はパッケージマネージャーを使用してインストールできます。OSX Homebrew を使用する場合は、brew install maven を試してください。Ubuntu ユーザーは sudo apt-get install maven を実行できます。Chocolatey (英語) を使用する Windows ユーザーは、昇格した(管理者)プロンプトから choco install maven を実行できます。 |
Spring Boot の依存関係は、org.springframework.boot
groupId
を使用します。通常、Maven POM ファイルは spring-boot-starter-parent
プロジェクトを継承し、1 つ以上の “スターター” への依存関係を宣言します。Spring Boot は、実行可能 jar を作成するためのオプションの Maven プラグインも提供します。
Spring Boot と Maven の使用開始の詳細については、Maven プラグインのリファレンスガイドの入門セクション (英語) を参照してください。
3.1.2. Gradle のインストール
Spring Boot は Gradle 6.8、6.9,, 7.x と互換性があります。Gradle をまだインストールしていない場合は、gradle.org (英語) の指示に従うことができます。
Spring Boot の依存関係は、org.springframework.boot
group
を使用して宣言できます。通常、プロジェクトは 1 つ以上の “スターター” への依存関係を宣言します。Spring Boot は、依存関係の宣言を簡素化し、実行可能な jar を作成するために使用できる便利な Gradle プラグインを提供します。
Spring Boot と Gradle の使用開始の詳細については、Gradle プラグインのリファレンスガイドの入門セクション (英語) を参照してください。
3.2. Spring Boot CLI のインストール
Spring Boot CLI(コマンドラインインターフェース)は、IDE なしで Spring を使用して迅速にプロトタイプを作成するために使用できるコマンドラインツールです。これにより、Groovy (英語) スクリプトを実行できます。つまり、定型コードをあまり使用せずに、使い慣れた Java のような構文を使用できます。
Spring Boot を操作するために CLI を使用する必要はありませんが、Eclipse STS や IntelliJ IDEA のような IDE を使用せずに Spring アプリケーションをすぐに使用できるようにする方法です。
3.2.1. 手動インストール
Spring CLI ディストリビューションは、Spring ソフトウェアリポジトリからダウンロードできます。
最新のスナップショット配布 (英語) も利用可能です。
ダウンロードしたら、解凍したアーカイブの INSTALL.txt (英語) の指示に従ってください。要約すると、.zip
ファイルの bin/
ディレクトリには、spring
スクリプト(Windows の場合は spring.bat
)があります。または、.jar
ファイルで java -jar
を使用できます(スクリプトは、クラスパスが正しく設定されていることを確認できます)。
3.2.2. SDKMAN! を使用したインストール
SDKMAN!(Software Development Kit Manager)は、Groovy や Spring Boot CLI など、さまざまなバイナリ SDK の複数のバージョンを管理するために使用できます。sdkman.io (英語) から SDKMAN! を取得し、次のコマンドを使用して Spring Boot をインストールします。
$ sdk install springboot
$ spring --version
Spring CLI v2.7.8
CLI の機能を開発し、ビルドしたバージョンにアクセスする場合は、次のコマンドを使用します。
$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-2.7.8-bin/spring-2.7.8/
$ sdk default springboot dev
$ spring --version
Spring CLI v2.7.8
上記の手順では、dev
インスタンスと呼ばれる spring
のローカルインスタンスをインストールします。ターゲットビルドの場所を指すため、Spring Boot を再構築するたびに、spring
は最新の状態になります。
次のコマンドを実行して確認できます。
$ sdk ls springboot
================================================================================
Available Springboot Versions
================================================================================
> + dev
* 2.7.8
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
3.2.3. OSX Homebrew のインストール
Mac で Homebrew (英語) を使用している場合、次のコマンドを使用して Spring Boot CLI をインストールできます。
$ brew tap spring-io/tap
$ brew install spring-boot
Homebrew は /usr/local/bin
に spring
をインストールします。
formula が表示されない場合、brew のインストールが古くなっている可能性があります。その場合は、brew update を実行して再試行してください。 |
3.2.4. MacPorts のインストール
Mac で MacPorts (英語) を使用している場合、次のコマンドを使用して Spring Boot CLI をインストールできます。
$ sudo port install spring-boot-cli
3.2.5. コマンドライン補完
Spring Boot CLI には、BASH [Wikipedia] および zsh [Wikipedia] シェルのコマンド補完を提供するスクリプトが含まれています。任意のシェルでスクリプト(spring
とも呼ばれる)を source
するか、個人またはシステム全体の bash 完了初期化に配置できます。Debian システムでは、システム全体のスクリプトは /shell-completion/bash
にあり、そのディレクトリ内のすべてのスクリプトは、新しいシェルの起動時に実行されます。例: SDKMAN! を使用してインストールした場合にスクリプトを手動で実行するには、次のコマンドを使用します。
$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
grab help jar run test version
Homebrew または MacPorts を使用して Spring Boot CLI をインストールすると、コマンドライン補完スクリプトがシェルに自動的に登録されます。 |
3.2.6. Windows Scoop のインストール
Windows で Scoop (英語) を使用している場合、次のコマンドを使用して Spring Boot CLI をインストールできます。
> scoop bucket add extras > scoop install springboot
Scoop は ~/scoop/apps/springboot/current/bin
に spring
をインストールします。
アプリのマニフェストが表示されない場合は、scoop のインストールが古くなっている可能性があります。その場合は、scoop update を実行して再試行してください。 |
3.2.7. クイックスタート Spring CLI の例
次の Web アプリケーションを使用して、インストールをテストできます。開始するには、次のように app.groovy
というファイルを作成します。
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
次に、次のようにシェルから実行します。
$ spring run app.groovy
依存関係がダウンロードされるため、アプリケーションの最初の実行は遅くなります。後続の実行ははるかに高速です。 |
お気に入りの Web ブラウザーで localhost:8080
を開きます。次の出力が表示されます。
Hello World!
4. 初めての Spring Boot アプリケーションの開発
このセクションでは、Spring Boot の主な機能の一部を紹介する小さな "Hello World!" Web アプリケーションの開発方法を説明します。このプロジェクトの構築には、ほとんどの IDE がサポートしている Maven を使用します。
Eclipse STS や IntelliJ IDEA のプロジェクト作成ウィザード (Spring Initializr) の依存関係から "Spring Web" スターターを選択することにより、以下のステップをショートカットできます。これにより、新しいプロジェクト構造が 生成されるため、すぐにコーディングを開始できます。詳細については、Spring Initializr を確認してください。 |
開始する前に、ターミナルを開いて次のコマンドを実行し、Java および Maven の有効なバージョンがインストールされていることを確認します。
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
このサンプルは、独自のディレクトリに作成する必要があります。以降の手順では、適切なディレクトリを作成し、それが現在のディレクトリであると想定しています。 |
4.1. POM の作成
まず、Maven 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>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
上記のリストは、機能するビルドを提供します。mvn package
を実行してテストできます(現時点では、「jar は空になります。含めるコンテンツは含まれていません!」という警告は無視できます)。
この時点で、プロジェクトを IDE にインポートできます(ほとんどの最新の Java IDE には Maven の組み込みサポートが含まれています)。簡単にするために、この例では引き続きプレーンテキストエディターを使用します。 |
4.2. クラスパスの依存関係を追加する
Spring Boot には、クラスパスに jar を追加できるいくつかの「スターター」が用意されています。スモークテスト用アプリケーションは、POM の parent
セクションにある spring-boot-starter-parent
を使用します。spring-boot-starter-parent
は、有用な Maven デフォルトを提供する特別なスタータです。また、dependency-management
セクションも用意されているため、特別な依存関係の version
タグを省略できます。
その他の「スターター」は、特定のタイプのアプリケーションを開発するときに必要になる可能性のある依存関係を提供します。Web アプリケーションを開発しているため、spring-boot-starter-web
依存関係を追加します。その前に、次のコマンドを実行して、現在あるものを確認できます。
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree
コマンドは、プロジェクトの依存関係のツリー表現を出力します。spring-boot-starter-parent
自体には依存関係がないことがわかります。必要な依存関係を追加するには、pom.xml
を編集し、parent
セクションのすぐ下に spring-boot-starter-web
依存関係を追加します。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
mvn dependency:tree
を再度実行すると、Tomcat Web サーバーや Spring Boot 自体を含む、多くの追加の依存関係があることがわかります。
4.3. コードの作成
アプリケーションを完成させるには、単一の Java ファイルを作成する必要があります。デフォルトでは、Maven は src/main/java
からソースをコンパイルするため、そのディレクトリ構造を作成してから、src/main/java/MyApplication.java
という名前のファイルを追加して、次のコードを含める必要があります。
@RestController
@SpringBootApplication
public class MyApplication {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@RestController
@SpringBootApplication
class MyApplication {
@RequestMapping("/")
fun home() = "Hello World!"
}
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}
ここには多くのコードはありませんが、非常に多くのことが行われています。次のいくつかのセクションで重要な部分を順に説明します。
4.3.1. @RestController および @RequestMapping アノテーション
MyApplication
クラスの最初のアノテーションは @RestController
です。これはステレオタイプアノテーションとして知られています。コードを読んでいる人や、クラスが特定のロールを果たす Spring のヒントを提供します。この場合、クラスは Web @Controller
であるため、Spring は受信 Web リクエストを処理するときにそれを考慮します。
@RequestMapping
アノテーションは、「ルーティング」情報を提供します。/
パスを持つ HTTP リクエストは home
メソッドにマッピングする必要があることを Spring に伝えます。@RestController
アノテーションは、結果の文字列を呼び出し元に直接返すように Spring に指示します。
@RestController および @RequestMapping アノテーションは Spring MVC アノテーションです (Spring Boot に固有ではありません)。詳細については、Spring リファレンスドキュメントの MVC セクションを参照してください。 |
4.3.2. @SpringBootApplication アノテーション
2 番目のクラスレベルのアノテーションは @SpringBootApplication
です。このアノテーションはメタアノテーションと呼ばれ @SpringBootConfiguration
、@EnableAutoConfiguration
、@ComponentScan
を組み合わせたものです。
その中で、ここで最も注目するアノテーションは @EnableAutoConfiguration
です。@EnableAutoConfiguration
は、追加した jar 依存関係に基づいて、Spring を構成する方法を「推測」するように Spring Boot に指示します。spring-boot-starter-web
には Tomcat と Spring MVC が含まれているため、自動構成は Web アプリケーションを開発していると仮定し、それに応じて Spring をセットアップします。
4.3.3. "main" メソッド
アプリケーションの最後の部分は main
メソッドです。これは、アプリケーションのエントリポイントに関する Java の規則に従う標準のメソッドです。メインのメソッドは run
を呼び出して Spring Boot の SpringApplication
クラスに委譲します。SpringApplication
はアプリケーションをブートストラップし、Spring を起動します。これにより、自動構成された Tomcat Web サーバーが起動します。MyApplication.class
を引数として run
メソッドに渡し、SpringApplication
がプライマリ Spring コンポーネントであることを通知する必要があります。args
配列も渡され、コマンドライン引数が公開されます。
4.4. サンプルの実行
この時点で、アプリケーションは動作するはずです。spring-boot-starter-parent
POM を使用したため、アプリケーションを開始するために使用できる有用な run
ゴールがあります。ルートプロジェクトディレクトリから mvn spring-boot:run
と入力して、アプリケーションを起動します。次のような出力が表示されます。
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.8)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.222 seconds (JVM running for 6.514)
Web ブラウザーを localhost:8080
で開くと、次の出力が表示されるはずです。
Hello World!
アプリケーションを正常に終了するには、ctrl-c
を押します。
4.5. 実行可能 Jar の作成
実例を実行できる完全に自己完結型の実行可能 jar ファイルを作成することで、この例を終了します。実行可能 jar( "fat jar" と呼ばれることもあります)は、コードの実行に必要なすべての jar 依存関係とともに、コンパイルされたクラスを含むアーカイブです。
実行可能な jar を作成するには、spring-boot-maven-plugin
を pom.xml
に追加する必要があります。これを行うには、dependencies
セクションのすぐ下に次の行を挿入します。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent POM には、repackage ゴールをバインドする <executions> 構成が含まれています。親 POM を使用しない場合、この構成を自分で宣言する必要があります。詳細については、プラグインのドキュメント (英語) を参照してください。 |
次のように、pom.xml
を保存し、コマンドラインから mvn package
を実行します。
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.7.8:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
target
ディレクトリを見ると、myproject-0.0.1-SNAPSHOT.jar
が表示されているはずです。ファイルのサイズは約 10 MB でなければなりません。内部を覗きたい場合は、次のように jar tvf
を使用できます。
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
また、myproject-0.0.1-SNAPSHOT.jar.original
という名前のはるかに小さいファイルが target
ディレクトリに表示されるはずです。これは、Spring Boot によって再パッケージ化される前に Maven が作成した元の jar ファイルです。
そのアプリケーションを実行するには、次のように java -jar
コマンドを使用します。
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.8)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.536 seconds (JVM running for 2.864)
前と同様に、アプリケーションを終了するには、ctrl-c
を押します。
5. 次のステップ
このセクションでは、Spring Boot の基本をいくつか説明し、独自のアプリケーションを作成するための方法を紹介しました。 特定の目的を解決したい場合は、入門ガイドを見てみましょう。また、Spring Boot に特化した "使い方" リファレンスドキュメントも用意されています。
それ以外の場合、次の論理的ステップ using.html に進みましょう。急いでいる場合は Spring Boot の機能を先に読んでしまうのも良いでしょう。