【Spring Boot】起動仕組みをやさしく解説

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

Spring Boot のアプリを動かすとき、
main メソッドで SpringApplication.run() を呼ぶだけで アプリが立ち上がります。

「どうしてこれだけで動くの?」
「裏側で何が起きているの?」
「Bean や Controller はどうやって読み込まれるの?」

そんな疑問を持つ方も多いと思います。

この記事では、Spring Boot の起動仕組みを
やさしく・実務で役立つ形 で整理していきます。

まずはコードを見て、そこから少しずつ理解していきましょう。

まずはコードを確認

Java
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

この 2 行だけでアプリが起動します。
しかし、裏側ではたくさんの処理が動いています。

起動の流れをふわっと理解する

Spring Boot の起動は、大きく分けて次の 4 ステップです。

  1. SpringApplication の準備
  2. コンテキスト(IoC コンテナ)の作成
  3. Bean の読み込みと初期化
  4. Web サーバー(Tomcat など)の起動

順番に見ていきます。

SpringApplication の準備

SpringApplication.run() を呼ぶと、
まず SpringApplication がアプリの設定を読み込みます。

  • 実行環境(dev / prod)
  • 設定ファイル(application.yml / properties)
  • 自動構成(AutoConfiguration)
  • ログ設定

などをまとめて準備します。

@SpringBootApplication の役割

Java
@SpringBootApplication

これは 3 つのアノテーションのセットです。

  • @Configuration
  • @EnableAutoConfiguration
  • @ComponentScan

特に @EnableAutoConfiguration が重要で、
Spring Boot の“自動設定”がここで有効になります。

コンテキスト(IoC コンテナ)の作成

次に、Spring が IoC コンテナ を作ります。

IoC コンテナとは
「アプリ全体の Bean を管理する箱」
のようなものです。

  • Bean の生成
  • DI(依存性注入)
  • ライフサイクル管理

などを担当します。

Bean の読み込みと初期化

コンテナができたら、 @ComponentScan によって Bean が読み込まれます。

  • @Component
  • @Service
  • @Repository
  • @Controller / @RestController
  • @Configuration
  • @Bean

などが対象です。

このタイミングで行われること

  • Bean のインスタンス生成
  • DI の実行
  • @PostConstruct の実行
  • AOP の適用
  • @ConfigurationProperties のバインド

Spring の“魔法”の多くはここで行われます。

Web サーバー(Tomcat)の起動

Spring Boot は組み込み Web サーバーを持っています。

デフォルトは Tomcat ですが、
Jetty や Undertow に変更することもできます。

起動すると、

  • ポート番号の設定(server.port)
  • HTTP リクエストの受付開始
  • Controller のマッピング登録

などが行われ、 アプリが外部からアクセスできる状態になります。

あわせて知っておきたいポイント

自動構成(AutoConfiguration)が便利すぎる

Spring Boot の最大の特徴は
必要な設定を自動でやってくれること
です。

例:

  • Web アプリなら Tomcat を自動起動
  • DB を使うなら DataSource を自動設定
  • Jackson を使うなら JSON 変換を自動設定

開発者は必要な部分だけ書けば OK です。

起動ログを見ると理解が深まる

アプリ起動時のログには

  • 読み込まれた Bean
  • 有効になった AutoConfiguration
  • Web サーバーの起動情報
    などが表示されます。

起動が遅いときは Actuator が便利

/actuator/beans
/actuator/conditions
などで、起動時の状態を確認できます。

使うときに気をつけたいこと

Bean の循環参照に注意

起動時にエラーになります。

AutoConfiguration を過信しすぎない

便利ですが、
「なぜ動いているのか」を理解しておくとトラブルに強くなります。

起動が遅い場合は設定を見直す

  • 不要な依存を削る
  • AutoConfiguration を除外する
    などで改善できます。

まとめ

Spring Boot の起動は、
「設定 → コンテナ作成 → Bean 初期化 → Web サーバー起動」
という流れで進みます。

  • @SpringBootApplication がすべての入口
  • AutoConfiguration が便利
  • IoC コンテナが Bean を管理
  • 最後に Tomcat が起動して API が動く

難しく聞こえますが、
「Spring が全部準備してくれて、最後にサーバーが立ち上がる」
と理解できれば十分です。


decopon
decopon

Spring Boot の起動仕組みを知ると、
「なぜこれだけで動くのか」が一気にクリアになります。
裏側の流れを理解すると、トラブルにも強くなります。
あなたの開発が、今日より少しだけ楽になりますように。

moco
moco

Spring さん、起きるときにこんなに準備してたんだね…なんだか朝の支度みたいでかわいい。

コメント

タイトルとURLをコピーしました