Spring Boot は、Java でバックエンドや業務システムを作るときの代表的なフレームワークです。 長期運用を前提にした企業システム、大きめの API、他システム連携が多い案件でよく名前が出ます。
Spring と Spring Boot は別物
まずここを分けてください。Spring Framework が土台の仕組みで、Spring Boot はそれを「設定なしで動く形」に整えたものです。
かつての Spring は大量の XML 設定が必要で、動かすまでが重いことで知られていました。Spring Boot はそれを次の3つで解消しています。
- 自動設定:クラスパスにあるライブラリを見て、妥当な設定を自動で行う
- スターター依存:関連ライブラリの版の組み合わせをまとめて面倒を見る
- 組み込みサーバー:Tomcat を内蔵し、単体で起動できる(別途アプリサーバーが要らない)
古い Spring の記事を読んで「難しすぎる」と感じたなら、それは Spring Boot 以前の話である可能性があります。
自動設定は便利だが、追いにくい
自動設定の裏返しが「なぜこう動いているのか分からない」という状態です。設定を書いていないのに動くので、問題が起きたときに手掛かりが少なくなります。
対処は決まっています。起動時に --debug を付けると、どの自動設定が適用され、どれが適用されなかったか、その理由まで一覧で出ます。原因不明の挙動はまずここを見てください。
重さの正体と向き不向き
Spring Boot は「起動が遅い」と言われます。実際、自動設定の判定と多数の Bean 生成が起動時に走るため、数秒かかることは珍しくありません。常駐させて長く動かすサーバーでは問題になりませんが、起動と終了を繰り返すサーバーレスとは相性がよくありません。
小さなツールには重く、責任の重い業務システムではその重さが安心感になります。用途で割り切るのが正しい見方です。
実務で見るポイント
- 雛形は Spring Initializr で作る。手で組む必要はない
- 運用に入るなら Actuator を最初から入れておく
- バージョン更新は Java 本体のサポート期間と揃えて計画する