自動構成

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

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

@SpringBootApplication または @EnableAutoConfiguration アノテーションを 1 つだけ追加してください。通常、プライマリ @Configuration クラスのみにいずれかを追加することをお勧めします。

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

自動構成は非侵襲的です。いつでも、独自の構成を定義して、自動構成の特定の部分を置き換えることができます。例: 独自の DataSource Bean を追加すると、デフォルトの組み込みデータベースサポートは無効になります。

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

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

不要な特定の自動構成クラスが適用されている場合は、次の例に示すように、@SpringBootApplication の 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 属性を使用して、代わりに完全修飾名を指定できます。@SpringBootApplicationexcludeexcludeName ではなく @EnableAutoConfiguration を使用したい場合は、こちらもご利用いただけます。最後に、spring.autoconfigure.exclude プロパティを使用して、除外する自動構成クラスのリストを制御することもできます。

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

自動構成パッケージ

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