はじめてのSpring Boot - ①環境構築をしよう


Last updated on

はじめまして、管理人のイロハです。 この連載では、はじめてSpring Bootに触れる方に向けて、Spring Bootの環境構築から動かすところから、実際に動かすところまで、理解を深めつつ紹介していきます。 なるべく分かりやすいように説明しますので、よければお付き合いください。

連載で使う環境

本連載では以下の環境を利用します。

  • IntelliJ IDEA Ultimate 2024.3.3
  • Spring Boot 3.4.2
  • Java 21

事前準備(ここで詰まりやすい)

環境構築で失敗しやすいのは、IDEよりもJDKの設定です。
先に以下を確認しておくと、後の手戻りを減らせます。

  • java -version でJava 21系が表示される
  • JAVA_HOME がインストールしたJDKを指している
  • IntelliJのProject SDKが同じJDKに設定されている

特に「ターミナルでは動くのにIDEで動かない」ケースは、IDE側SDKの不一致が原因のことが多いです。

IDEについて

Java用のIDEとしては様々なものが存在します。その中で、本ブログではIntelliJ IDEA Ultimateを使用しています。 品質が高いことや、安定度、開発の活発度などを総合的にみて筆者が好きなためです。

ただし、無料版の場合はSpringのサポートがされていないため、使いづらくなってしまいます。 高いIDEですが、有料版であるUltimateがおすすめです。

説明は無くなってしまいますが、お好きなIDEを使用していただいて大丈夫です。

プロジェクトを作ろう!

まずは、プロジェクトのひな形を手に入れましょう! Spring Boot、Springは元々環境構築が大変と言われていました。しかし、現在はspring initializrという便利なサイトがあるので心配は不要です!

早速spring initializrにアクセスしてみましょう!以下のようなサイトが表示されるはずです。 このサイトでは、利用したい言語やバージョン、パッケージ名などを入力するだけで、簡単にひな形を手に入れることができます。

さらに、右側にあるdependenciesのメニューから利用したいライブラリを指定すれば、ライブラリもまとめて準備してくれる優れものです!

今回は、以下のように設定してGENERATEボタンを押してみましょう。

こうすることで、Zipファイルがダウンロード出来たはずです。 展開しておきましょう。

プロジェクトを開こう!

ここからはIDEの操作です。前述したとおり、IntelliJ IDEAを利用していきます。 ほかのIDEでも大体同じ手順で出来るはずです。

IDEでプロジェクトを開くと、以下のようになるはずです。

src/main/java/com/springboot123/myfirstspringboot/MyfirstspringbootApplication.javaを探して開いてみましょう。 シンプルなコードですが、これがSpring Bootのアプリケーションです。

このクラスには、SpringBootのアプリケーションで必要なアノテーションをまとめた@SpringBootApplicationアノテーションが指定されています。 これにより、AutoConfigurationが有効化されたり、コンポーネントスキャンの機能を有効化されたりします。 詳細はリファレンスに記載があるので興味がある人は見てみるとよいでしょう。

そして、mainメソッドの中ではSpringApplication.run(MyfirstspringbootApplication.class, args);という処理が記述されています。 これは、MyfirstspringbootApplicationクラスをSpringのアプリケーションとして実行する、というコードです。 この行により、Spring Bootが起動され処理が実行されていきます。

アプリケーションを実行してみよう!

続いて、アプリケーションを実際に実行してみましょう。 実行すると、以下のような結果になるはずです。

Spring Bootのロゴや、数行程度のINFOログがログに出力されました。

System.out.println()のような、標準出力に書き込む処理は書いていませんが、これはSpring Bootフレームワークが出力したログになります。 Spring Boot起動時にはこのようなログが表示される実装が入っているわけですね。

ということで、以上でSpring Bootを用いたアプリケーションの起動は完了です!

よくあるエラーと対処

初回起動時に出やすいエラーを、先に載せておきます。

Port 8080 was already in use

別プロセスが8080番を利用している状態です。
既存プロセスを停止するか、application.ymlでポートを変えて起動します。

server:
  port: 8081

Unsupported class file major version

JDKのバージョン不一致で発生します。
「プロジェクトで使うJDK」「Gradle/Maven実行時のJDK」「IDE設定」の3つを同じバージョンに揃えてください。

Could not resolve dependencies

ネットワークやプロキシ環境の影響で依存関係の取得に失敗している状態です。
社内ネットワークの場合は、Gradle/Mavenのプロキシ設定が必要なことがあります。

次にやると理解が進むこと

起動確認までできたら、次は「最小のAPIを1本作る」と理解が一気に進みます。
例えば、@RestController/helloを返すだけでも、Spring BootのルーティングやDIの感覚が掴めます。

IDE以外で起動する方法(CLI)

実務ではCIやコンテナ環境でIDEなし起動も行うため、コマンド実行も押さえておくと便利です。

Mavenプロジェクトの場合

./mvnw spring-boot:run

Gradleプロジェクトの場合

./gradlew bootRun

どちらも起動後に http://localhost:8080 へアクセスして動作確認できます。

最小APIを1本追加してみる

初回学習では、次のようなHelloControllerを追加するだけで十分です。

package com.springboot123.myfirstspringboot;

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

@RestController
public class HelloController {

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

起動後に GET /hello を叩いて文字列が返れば、ルーティングと起動パスが理解できています。

初回セットアップを楽にするコツ

  • JavaとBuild ToolのバージョンをREADMEに明記する
  • ./mvnw / ./gradlew を使い、ローカル依存を減らす
  • .envapplication-local.yml の扱いを最初に決める
  • 起動確認用の/helloなど最小エンドポイントを残しておく

最初のセットアップを標準化しておくと、チーム開発に移行したときのオンボーディングが速くなります。

まとめ

今回の記事では、プロジェクトの作成方法から、起動までを紹介しました。 次回はSpring Bootの核となる概念、Beanに触れて体験していきましょう!