ブートストラップの自動設定とは何か?(Spring BootのAuto Configuration)

こんにちは。ゆうせいです。
Spring Bootを使っていると、特に設定をしなくてもアプリが動くことに気づきますよね。

「なぜSpring Bootは設定なしで動くの?」
「ブートストラップの自動設定とは何?」
「どのように設定が自動で行われるの?」

結論から言うと、これは Spring Bootの「自動設定(Auto Configuration)」機能 によるものです。
今回は、このブートストラップの自動設定(Bootstrap Auto Configuration) について分かりやすく解説します!


1. ブートストラップの自動設定(Auto Configuration)とは?

「ブートストラップの自動設定」 とは、Spring Bootが適切な設定を自動で行う仕組み のことです。
これは 「Auto Configuration(オートコンフィギュレーション)」 とも呼ばれます。

📌 例:

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

このコードだけで、以下の設定が自動で行われます。

  • Tomcatサーバーの起動
  • Spring MVCの設定
  • DataSource(データベース接続)の設定
  • Beanの自動登録
  • Spring Securityのデフォルト設定(ログイン画面)

通常のSpringアプリなら、これらの設定をすべて手動でXMLやJavaコードに書く必要がありますが、Spring Bootでは自動で適用されます!


2. 自動設定の仕組み

Spring Bootの自動設定は、主に @EnableAutoConfiguration によって動作します。
実は、@SpringBootApplication には @EnableAutoConfiguration が含まれています。

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

@SpringBootApplication の中身

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Configuration
@ComponentScan
@EnableAutoConfiguration
public @interface SpringBootApplication {
}

つまり、@SpringBootApplication を使うことで、自動設定(Auto Configuration)が有効になる のです!


3. どのような設定が自動で行われる?

Spring Bootの自動設定(Auto Configuration)では、以下のような機能が自動でセットアップされます。

✅ ① Webアプリ関連の自動設定

自動設定説明
Spring MVCspring-boot-starter-web を入れると、Spring MVCが自動設定される
Thymeleafspring-boot-starter-thymeleaf を入れると、テンプレートエンジンが設定される
エラーページerror.html を作ると、カスタムエラーページが適用される

✅ ② データベース関連の自動設定

自動設定説明
DataSource(JDBC接続)spring-boot-starter-data-jpa を入れると、自動でDB接続が設定される
H2(組み込みDB)spring-boot-starter-data-jpa + h2 を入れると、H2が自動でセットアップされる
Hibernate(ORM)spring-boot-starter-data-jpa を入れると、自動でJPAの設定が適用される

✅ ③ セキュリティ関連の自動設定

自動設定説明
Spring Securityspring-boot-starter-security を入れると、自動でログイン画面が設定される
デフォルトのユーザー作成user というユーザーとランダムなパスワードが作成される

✅ ④ その他の自動設定

自動設定説明
Actuatorspring-boot-starter-actuator を入れると、アプリの状態監視が可能になる
Jackson(JSON変換)spring-boot-starter-web を入れると、自動でJSONとオブジェクトの変換が有効になる

4. 自動設定をカスタマイズする

自動設定のままでは都合が悪い場合、自分で設定を上書きできます。

✅ (1) application.properties で設定を変更

例えば、Spring Bootのデフォルトのポートは 8080 ですが、application.properties で変更できます。

server.port=8081

✅ (2) @Configuration でBeanをカスタマイズ

もし デフォルトのDataSourceが不要 なら、自分でカスタム設定できます。

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource customDataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:3306/mydb")
                .username("user")
                .password("password")
                .build();
    }
}

➡ これにより、Spring BootのデフォルトのDB設定が上書きされます。


5. 自動設定を無効にする方法

Spring Bootの自動設定を 無効にする こともできます。

✅ (1) @EnableAutoConfiguration を使わない

もし 自動設定を使いたくない 場合、@SpringBootApplication の代わりに @Configuration を使い、自動設定を無効にできます。

@Configuration
public class MyConfig {
    // ここで手動設定を行う
}


✅ (2) @SpringBootApplication(exclude = ...) で特定の自動設定を無効化

特定の自動設定だけを無効にしたい場合、exclude を使います。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication { ... }

➡ これにより、DataSource(DB接続)の自動設定だけを無効化 できます。


6. まとめ

項目説明
ブートストラップの自動設定とは?Spring Bootが必要な設定を自動で適用する仕組み
有効になる条件@SpringBootApplication@EnableAutoConfiguration が含まれる
自動設定されるものWeb(MVC, Thymeleaf), DB(JPA, H2), セキュリティ(ログイン), Actuator など
カスタマイズ方法application.properties@Configuration を使う
無効化方法exclude = {xxx.class} を使う

7. 結論

🚀 Spring Bootの「ブートストラップの自動設定」とは、設定を自動化する仕組み(Auto Configuration)!
🚀 @SpringBootApplication によって @EnableAutoConfiguration が有効になる!
🚀 カスタマイズや無効化も可能なので、必要に応じて設定を変更できる!

これで、Spring Bootの自動設定の仕組みがスッキリ理解できましたね!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。