はじめに
Spring Boot のアプリを動かすとき、 main メソッドで SpringApplication.run() を呼ぶだけで アプリが立ち上がります。
「どうしてこれだけで動くの?」
「裏側で何が起きているの?」
「Bean や Controller はどうやって読み込まれるの?」
そんな疑問を持つ方も多いと思います。
この記事では、Spring Boot の起動仕組みを
やさしく・実務で役立つ形 で整理していきます。
まずはコードを見て、そこから少しずつ理解していきましょう。
まずはコードを確認
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}この 2 行だけでアプリが起動します。
しかし、裏側ではたくさんの処理が動いています。
起動の流れをふわっと理解する
Spring Boot の起動は、大きく分けて次の 4 ステップです。
- SpringApplication の準備
- コンテキスト(IoC コンテナ)の作成
- Bean の読み込みと初期化
- Web サーバー(Tomcat など)の起動
順番に見ていきます。
SpringApplication の準備
SpringApplication.run() を呼ぶと、
まず SpringApplication がアプリの設定を読み込みます。
- 実行環境(dev / prod)
- 設定ファイル(application.yml / properties)
- 自動構成(AutoConfiguration)
- ログ設定
などをまとめて準備します。
@SpringBootApplication の役割
@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 が全部準備してくれて、最後にサーバーが立ち上がる」
と理解できれば十分です。

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

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

コメント