開発環境
PR

【Laragon番外編11】Spring Boot 4.1.1を動かす|Java 25・Maven 3.9.16でWebアプリとREST APIを確認

Laragon番外編11 Spring Boot 4.1.1をJava 25とMaven 3.9.16で動かす記事のアイキャッチ
toshi
記事内に商品プロモーションを含む場合があります
最終更新:2026年9月30日

前回のLaragon番外編10では、LaragonへJava 25とMaven 3.9.16を追加し、VS CodeからJavaプログラムの実行やデバッグ、Mavenによるビルドまで確認しました。

今回は、そのJava開発環境をもう一段進めて、Spring Boot 4.1.1を使ったWebアプリケーションを実際に動かします。

前回の記事はこちらです。

Laragon番外編10 Java 25とMaven 3.9.16
【Laragon番外編10】Java 25とMaven 3.9.16を導入|VS Codeでデバッグ・JAR実行まで
【Laragon番外編10】Java 25とMaven 3.9.16を導入|VS Codeでデバッグ・JAR実行まで

今回も単に設定だけを紹介するのではなく、実際にLaragon環境でSpring Bootを起動し、

・ブラウザへのWebページ表示
・REST APIの動作確認
・Mavenによるビルド
・実行可能JARの生成
・java -jar による起動

まで実機で確認します。

今回使用したSpring Boot環境

今回確認した環境は次のとおりです。

  1. Windows 11
  2. Laragon 2026 v8.6.1
  3. Java 25.0.4.1
  4. Maven 3.9.16
  5. Spring Boot 4.1.1
  6. Apache Tomcat 11.0.24
  7. VS Code
  8. プロジェクト名:spring-boot-test
  9. パッケージ名:jp.toshilab.springboot

Spring BootそのものをLaragonへ直接インストールするわけではありません。

今回はSpring InitializrでSpring Bootプロジェクトを生成し、そのプロジェクトをLaragonの www フォルダへ配置して、前回導入したJava 25とMaven 3.9.16を使って動かします。

Spring Bootとは?

Spring Bootは、Spring Frameworkを使ったアプリケーション開発の設定や起動を簡略化し、スタンドアロンで実行しやすくする仕組みです。今回は、その中でもWebアプリケーションとREST APIを作成します。

今回のSpring MVC構成では、組み込みTomcatを使ってWebアプリケーションを起動できます。

Q
Q.LaragonにTomcatを別途インストールする必要はありますか?

A.今回の構成では必要ありません。

Spring Bootプロジェクトでは組み込みTomcatを利用するため、Laragon側へTomcatを別途追加しなくてもWebアプリケーションを起動できます。

Spring Bootを起動すると、今回の環境ではTomcatが8080番ポートで起動し、

http://localhost:8080/
Plaintext

からWebアプリケーションへアクセスできます。

まずはSpring Initializrで、Spring Bootプロジェクトのひな形を作成します。

1.JavaとMavenの状態を確認する

Spring Bootプロジェクトを作る前に、前回構築したJavaとMavenがLaragon Terminalから認識されているか確認しました。

実行する内容は

where.exe java
java -version
echo %JAVA_HOME%
mvn -version
BAT (Batchfile)

です。

確認できた環境は、

Java 25.0.4.1
Maven 3.9.16
JAVA_HOME=C:\laragon\bin\java\jdk-25.0.4.1+1

でした。

これでSpring Bootを動かす土台は整っています。

2.Spring Initializrでプロジェクトを作成する

Spring Bootでは、最初からすべてのファイルを手作業で作る必要はありません。

Spring Initializrを使うと、必要な設定を選択するだけでSpring Bootプロジェクトのひな形を生成できます。

今回設定した内容は次のとおりです。

  1. Project:Maven
  2. Language:Java
  3. Spring Boot:4.1.1
  4. Group:jp.toshilab
  5. Artifact:spring-boot-test
  6. Package name:jp.toshilab.springboot
  7. Packaging:Jar
  8. Java:25
  9. Dependency:Spring Web

設定後にGenerateを実行すると、

spring-boot-test.zip

が生成されます。

今回Spring Boot 4.1.1で生成された pom.xml では、Web用の依存関係として spring-boot-starter-webmvc が設定されました。

Spring Boot 3以前の記事などではspring-boot-starter-webが使われている場合があります。Spring Boot 4ではspring-boot-starter-webmvcへの移行が推奨されており、今回はSpring Initializrが実際に生成した内容をそのまま使用しています。

3.プロジェクトをLaragonのwwwへ配置する

ダウンロードしたZIPファイルを展開し、次の場所へ配置しました。

C:\laragon\www\spring-boot-test

プロジェクト直下には、

・.mvn
・src
・mvnw
・mvnw.cmd
・pom.xml

などが生成されています。

VS Codeでは、

C:\laragon\www\spring-boot-test

をフォルダとして開きます。

4.pom.xmlを確認する

Spring Initializrが生成した pom.xml には、Spring Bootプロジェクトを動かすための設定がまとめられています。

今回確認できた主な内容は、

・Spring Boot 4.1.1
・Java 25
・spring-boot-starter-webmvc
・spring-boot-starter-webmvc-test
・spring-boot-maven-plugin

です。

spring-boot-maven-plugin は、後ほど実行可能JARを生成するときにも使用されます。

5.Spring Bootを初めて起動する

Spring Initializrによって、

src/main/java/jp/toshilab/springboot/SpringBootTestApplication.java

が自動生成されています。

このファイルをVS Codeで開くと、main メソッド付近に Run が表示されます。

今回はこの Run からSpring Bootを起動しました。

正常に起動すると、

Spring Boot 4.1.1
Java 25.0.4.1
Apache Tomcat 11.0.24
port 8080

を確認できます。

これでSpring Boot本体は正常に動いています。

6.最初はWhitelabel Error Pageが表示される

Spring Bootを起動した状態で、

http://localhost:8080/

へアクセスしました。

ところが、最初は次の404画面が表示されます。

これはSpring Bootの起動に失敗したわけではありません。

まだ / に対応するControllerやHTMLファイルを作成していないため、Spring Bootが表示する既定の404画面です。

Whitelabel Error Page が表示されても、ログに

Started SpringBootTestApplication

が出ていればSpring Boot自体は起動しています。

今回の404は、表示するページをまだ作っていないことが原因です。

7.HelloControllerを作成する

次に、

src/main/java/jp/toshilab/springboot/

の中へ、

HelloController.java

を作成しました。

最初の動作確認では、/ にアクセスしたとき、

Hello Spring Boot!

を返すだけのシンプルなControllerを作ります。

内容は

package jp.toshilab.springboot;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/")
    public String hello() {
        return "Hello Spring Boot!";
    }
}
Java

です。

保存してSpring Bootを再起動し、

http://localhost:8080/

へアクセスします。

今度はブラウザに、

Hello Spring Boot!

と表示されました。

これで、

ブラウザ
↓
Spring Boot
↓
HelloController
↓
文字列を返す

という基本的な流れを確認できました。

8.WebページとREST APIを分ける

文字列だけでもSpring Bootの動作確認はできますが、今回はもう少しWebアプリケーションらしい形にします。

最終的には、

/

をWebページ、

/api/hello

をREST APIとして使います。

そのため、HelloControllerのURLを /api/hello へ変更します。

最終版HelloController.javaは

package jp.toshilab.springboot;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/api/hello")
    public String hello() {
        return "Spring Boot APIは正常に動作しています。";
    }
}
Java

です。

補足:実際のAPIでデータを返すときの注意

今回はSpring BootのREST APIの基本的な流れを確認するため、HelloController から文字列を直接返すシンプルな構成にしています。

今後、Spring Data JPAなどを使ってデータベースの情報を扱う場合は、@Entity を付けたJPAエンティティをそのまま @RestController から返さないよう注意が必要です。

エンティティをそのまま返すと、APIで公開する予定のなかった項目までJSONレスポンスに含まれたり、関連するエンティティの取得によって意図しない追加処理が発生したりする可能性があります。

実際のアプリケーションでは、APIで返したい項目だけを持つDTOやrecordなどへ変換してレスポンスを返す設計を検討します。

この記事ではまだJPAを使用していないため、まずはControllerとREST APIの基本的な動作を確認していきます。

9.HTMLと外部CSSでトップページを作る

Spring Bootでは、

src/main/resources/static

へ置いたファイルを静的ファイルとして配信できます。

今回は次の構成にしました。

主に使用するファイルは、

static/
|
├─ index.html
|
├─ api-check.html
|
└─ css/
	 |
   └─ style.css
Plaintext

です。

index.html の内容は

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Spring Boot | ToshiLab</title>
    <link rel="stylesheet" href="/css/style.css">
</head>

<body>
    <main>
        <section class="card">
            <span class="badge">Spring Boot 4.1.1</span>

            <h1>Spring Boot Web Application</h1>

            <p>
                Laragon環境でJava 25とMaven 3.9.16を使用し、
                Spring BootのWebアプリケーションを起動しています。
            </p>

            <a href="/api-check.html">REST APIを確認する</a>

            <footer>
                ToshiLab Spring Boot Demo
            </footer>
        </section>
    </main>
</body>
</html>
HTML

外部CSSの style.css は

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    background: #f4f7f5;
    color: #1f2937;
}

main {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 24px;
}

.card {
    width: min(720px, 100%);
    padding: 48px;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.08);
    text-align: center;
}

.badge {
    display: inline-block;
    margin-bottom: 16px;
    padding: 6px 14px;
    border-radius: 999px;
    background: #e8f5e9;
    color: #2e7d32;
    font-weight: 700;
}

h1 {
    margin: 0 0 16px;
    font-size: clamp(2rem, 6vw, 3.4rem);
}

p {
    margin: 0 auto 28px;
    max-width: 560px;
    line-height: 1.8;
    color: #4b5563;
}

a {
    display: inline-block;
    padding: 12px 22px;
    border-radius: 10px;
    background: #6db33f;
    color: #ffffff;
    font-weight: 700;
    text-decoration: none;
}

a:hover {
    opacity: 0.88;
}

footer {
    margin-top: 30px;
    font-size: 0.9rem;
    color: #9ca3af;
}

.api-card {
    max-width: 760px;
}

.api-result {
    margin: 24px 0;
    padding: 20px;
    border-radius: 14px;
    background: #f8fafc;
    border: 1px solid #dbe4ee;
    font-size: 1.1rem;
    font-weight: 700;
    color: #1f2937;
    line-height: 1.8;
    word-break: break-word;
}

.api-actions {
    margin-top: 12px;
}

.api-actions a {
    background: #2563eb;
}
CSS

です。

今回はCSSをHTML内へ直接書かず、外部ファイルとして分離しています。

これにより、HTMLはページ構造、CSSは見た目という役割を分けられます。

10.REST API確認ページを作る

トップページには、

REST APIを確認する

というボタンを配置しました。

ボタンを押すと、

/api-check.html

へ移動します。

api-check.html ではJavaScriptの fetch() を使って、

/api/hello

へアクセスします。

内容は

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Spring Boot API Check | ToshiLab</title>
    <link rel="stylesheet" href="/css/style.css">
</head>

<body>
    <main>
        <section class="card api-card">
            <span class="badge">Spring Boot API Check</span>

            <h1>REST API Result</h1>

            <p>
                <code>/api/hello</code> へアクセスして、
                Spring BootのAPIレスポンスを確認しています。
            </p>

            <div class="api-result" id="api-result">
                読み込み中...
            </div>

            <div class="api-actions">
                <a href="/">トップページへ戻る</a>
            </div>

            <footer>
                ToshiLab Spring Boot Demo
            </footer>
        </section>
    </main>

    <script>
        fetch('/api/hello')
            .then(response => response.text())
    </script>
</body>
</html>
HTML

です。

HelloControllerから返された、

Spring Boot APIは正常に動作しています。

という文字列を、API確認ページ上へ表示します。

11.完成したトップページを確認する

Spring Bootを再起動し、

http://localhost:8080/

へアクセスします。

今度は、HTMLと外部CSSを使ったWebページが表示されました。

Spring Bootから、

index.html
+
css/style.css

が正常に配信されています。

「REST APIを確認する」をクリックすると、API確認ページへ移動します。

12.REST APIの動作を確認する

REST API確認ページでは、

/api/hello

へアクセスし、

Spring Boot APIは正常に動作しています。

というレスポンスが表示されました。

これで、

HTML
↓
JavaScript
↓
REST API
↓
HelloController

まで一連の動作を確認できました。


13.Maven PluginからSpring Bootを起動する

VS CodeのRun以外にも、MavenからSpring Bootを起動できます。

Laragon Terminalでプロジェクトフォルダへ移動し、

cd C:\laragon\www\spring-boot-test
mvn spring-boot:run
BAT (Batchfile)

を実行します。

正常に起動すると、

spring-boot:4.1.1:run

が実行され、

Tomcat started on port 8080
Started SpringBootTestApplication

まで確認できます。

これでSpring Boot Maven Pluginからの起動も確認できました。

14.mvn clean packageで実行可能JARを作る

Spring Bootアプリは、実行可能JARとしてまとめることもできます。

Spring Bootを停止した状態で

cd C:\laragon\www\spring-boot-test
mvn clean package
BAT (Batchfile)

を実行しました。

テスト結果は、

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

となり、最終的に、

BUILD SUCCESS

を確認できました。

生成されたファイルは、

target\spring-boot-test-0.0.1-SNAPSHOT.jar

です。

Spring Boot Maven Pluginによって、依存関係を含んだ実行可能JARとして再構成されています。

15.java -jarでSpring Bootを起動する

生成したJARは、

cd C:\laragon\www\spring-boot-test
java -jar target\spring-boot-test-0.0.1-SNAPSHOT.jar
BAT (Batchfile)

で起動できます。

実行後、

Spring Boot 4.1.1
Tomcat 11.0.24
port 8080

を確認できました。

さらに最終確認では、

Adding welcome page: class path resource [static/index.html]

というログも確認できました。

つまり、作成した index.html やCSSなども実行可能JARの中へ含まれています。

16.JAR起動後もWebページとREST APIを確認する

java -jar で起動した状態でも、

http://localhost:8080/

からWebページが正常に表示されました。

さらに「REST APIを確認する」ボタンから、

/api/hello

のレスポンスも正常に取得できています。

ここまで確認できれば、VS Codeからの実行だけではなく、ビルド済みJAR単体でもSpring Bootアプリが正常に動作していることが分かります。

PR:別冊(必要な方だけ)

PR:『作って学ぶ Spring Boot入門』

LaragonでSpring Boot 4.1.1を起動し、WebページやREST API、実行可能JARの動作まで確認できたら、次はSpring Bootを使ったWebアプリケーション開発をもう少し深く学んでみませんか?

『作って学ぶ Spring Boot入門』は2026年刊のSpring Boot入門書で、
Mavenの基礎からSpring MVCを使ったWebアプリケーション、Web API、データベース連携、Spring Securityによる認証・認可まで段階的に学ぶことができます。

今回の記事ではSpring BootをLaragon上で動かし、WebページとREST APIを作成して、Mavenによるビルドや実行可能JARの起動まで確認しました。その先で、Spring Bootを使った本格的なWebアプリケーション開発へ進みたい方におすすめの一冊です。

※本書はSpring Boot 4に対応しています。本記事ではSpring Boot 4.1.1を使用しているため、細かなバージョン差によって設定や動作が異なる場合があります。最新仕様についてはSpring Boot公式ドキュメントもあわせてご確認ください。

※価格や在庫、版数は変わるため、最終確認はリンク先でお願いします。

今回確認した4つのポイント

  1. http://localhost:8080/ でWebページを表示できた
  2. /api/hello からREST APIのレスポンスを取得できた
  3. mvn clean package がBUILD SUCCESSで完了した
  4. 生成した実行可能JARを java -jar で起動できた

今回の実機環境では、Laragon上のJava 25・Maven 3.9.16からSpring Boot 4.1.1が正常に動作することを確認できました。

Spring BootをLaragonで動かす流れ

今回の流れを整理すると、

  1. Java 25とMaven 3.9.16を確認する
  2. Spring InitializrでSpring Bootプロジェクトを生成する
  3. spring-boot-testをLaragonのwwwへ配置する
  4. VS CodeからSpring Bootを起動する
  5. HelloControllerで動作を確認する
  6. HTMLと外部CSSでWebページを作る
  7. REST APIを作成する
  8. Maven Pluginから起動する
  9. mvn clean packageで実行可能JARを生成する
  10. java -jarでJARを起動する
  11. WebページとREST APIの最終確認を行う

まとめ

今回はLaragon番外編11として、Java 25とMaven 3.9.16の環境からSpring Boot 4.1.1を実際に動かしました。

Spring Initializrでプロジェクトを生成するだけでなく、

・Spring Bootの起動
・組み込みTomcatの確認
・Controllerの作成
・HTMLと外部CSSの配信
・REST APIの作成
・Maven Pluginからの起動
・実行可能JARの生成
・JAR単体からの起動

まで確認しています。

前回までのJava開発環境が、今回から実際のWebアプリケーション開発へつながりました。

Spring Bootには、データベース接続、フォーム処理、テンプレートエンジン、Spring Securityなど、さらに多くの機能があります。

今回はLaragon上でSpring Bootを動かすことを目的としているため、まずはWebページとREST APIを確認できるシンプルな構成にしています。

今後は、ここまで構築してきたLaragon環境を一度整理し、シリーズ全体の導線や、バックアップ・復旧を含む実運用についても確認していきます。

Laragon番外編12 | 開発環境を総まとめ
【Laragon番外編12】開発環境を総まとめ|PHP・Node.js・Python・Go・Ruby・Java・Spring Bootまで
【Laragon番外編12】開発環境を総まとめ|PHP・Node.js・Python・Go・Ruby・Java・Spring Bootまで

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

ABOUT ME
toshi
toshi
フルスタックエンジニア
C型肝炎や感染症の闘病を経て現在通院中
フリーランスとして今日を生きる、それがすべて。
静かな光の中で、歩みを止めずに生きていく。
実験大好きなので色々とやっていきます。
記事URLをコピーしました