Spring Boot: 3.2.5

Spring Bootの公式ドキュメントのAuto configuration Classesのセクションを見る

Spring Bootが何の実装クラスをBeanとしてアプリケーションコンテキストに登録するかという情報は、Spring Bootの公式ドキュメントのAuto configuration Classesのセクション(Spring Boot Reference Documentation: Auto-configuration Classes)に載っているものを確認するのが良い。

MessageSourceの例で公式ドキュメントを見る

例えば以下のフィールドに何の具象クラスがDIされるのかを確認したいとする。

private final MessageSource messageSource;

Spring Boot Reference Documentation: Auto-configuration ClassesMessageSourceと検索するとMessageSourceAutoConfigurationがヒットする。リンク先はGitHubのソースコード(MessageSourceAutoConfiguration.java)となっている。

コードを確認することで、ResourceBundleMessageSourceが具象クラスとなっていることがわかる。

@Bean
public MessageSource messageSource(MessageSourceProperties properties) {
	ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();

自動設定レポートで確認する

Spring Bootでは、デバッグモードで起動すると自動設定レポートというものがログ出力される。

application.ymlに以下を書いて起動する。

debug: true

自動設定クラスのリスト

自動設定されるクラスのリストには以下の種類があり、セクションごとに別れてレポートが出力される。

  • Positive Matches: アプリケーションの現在の状態や設定に基づいて条件を満たしたため、適用された自動設定クラスのリスト
  • Negative Matches: 条件を満たさなかったために適用されなかった自動設定クラスのリスト
  • Exclusions: 明示的に除外された自動設定クラスのリスト
  • Unconditional Classes: 条件に依存しない自動設定クラスのリスト

MessageSourceの例で自動設定レポートを見る

先ほどと同じくMessageSourceの例で確認する。

Spring Bootを起動したときのログをMessageSourceで検索すると以下の記述が見つかる。

MessageSourceAutoConfiguration matched:
    - ResourceBundle found bundle file [/Users/me/IdeaProjects/my-pj/app/build/resources/main/message.properties] (MessageSourceAutoConfiguration.ResourceBundleCondition)
    - @ConditionalOnMissingBean (names: messageSource; SearchStrategy: current) did not find any beans (OnBeanCondition)

この記述はインデントされており、Positive Matchesのセクションに入っていることが、ログを遡るとわかる。