自動構成

Spring Boot 自動構成は、追加した jar 依存関係に基づいて、Spring アプリケーションを自動的に構成しようとします。例: HSQLDB がクラスパス上にあり、データベース接続 Bean を手動で構成していない場合、Spring Boot はメモリ内データベースを自動構成します。

@Configuration (Javadoc) クラスの 1 つに @EnableAutoConfiguration (Javadoc) または @SpringBootApplication (Javadoc) アノテーションを追加して、自動構成をオプトインする必要があります。

@SpringBootApplication (Javadoc) または @EnableAutoConfiguration (Javadoc) アノテーションは 1 つだけ追加する必要があります。通常は、プライマリ @Configuration (Javadoc) クラスにのみ、どちらか一方を追加することをお勧めします。

自動構成の段階的な置き換え

自動構成は非侵襲的です。いつでも、自動構成の特定の部分を置き換える独自の構成の定義を開始できます。例: 独自の DataSource (標準 Javadoc) Bean を追加すると、デフォルトの組み込みデータベースサポートは削除されます。

現在適用されている自動構成とその理由を調べる必要がある場合は、--debug スイッチを使用してアプリケーションを開始してください。これにより、選択したコアロガーのデバッグログが有効になり、コンソールに状態レポートが記録されます。

特定の自動構成クラスを無効にする

不要な特定の自動構成クラスが適用されていることがわかった場合は、次の例に示すように、@SpringBootApplication (Javadoc) の exclude 属性を使用して無効にすることができます。

  • Java

  • Kotlin

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

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

}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

@SpringBootApplication(exclude = [DataSourceAutoConfiguration::class])
class MyApplication

クラスがクラスパス上にない場合は、アノテーションの excludeName 属性を使用して、代わりに完全修飾名を指定できます。@SpringBootApplication (Javadoc) ではなく @EnableAutoConfiguration (Javadoc) を使用する場合は、exclude と excludeName も使用できます。最後に、spring.autoconfigure.exclude プロパティを使用して、除外する自動構成クラスのリストを制御することもできます。

アノテーションレベルとプロパティの使用の両方で除外を定義できます。
自動構成クラスは public ですが、パブリック API と見なされるクラスの唯一の側面は、自動構成を無効にするために使用できるクラスの名前です。ネストされた構成クラスや Bean メソッドなど、これらのクラスの実際の内容は内部使用専用であり、直接使用することはお勧めしません。

自動構成パッケージ

自動構成パッケージは、エンティティや Spring Data リポジトリなどをスキャンするときに、さまざまな自動構成機能がデフォルトで検索するパッケージです。@EnableAutoConfiguration (Javadoc) アノテーション (直接または @SpringBootApplication (Javadoc) に存在することによる) によって、デフォルトの自動構成パッケージが決まります。追加のパッケージは、@AutoConfigurationPackage (Javadoc) アノテーションを使用して構成できます。