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 ClassesでMessageSource
と検索すると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
のセクションに入っていることが、ログを遡るとわかる。