Spring Web MVCのAuto Configuration周辺のクラス図を描いてみた
Spring BootでWeb MVCを使う場合、@EnableWebMvc
を使うとAuto Configurationの一部が無効化されてしまうため、原則付けないほうが良い(公式ドキュメント)とされています。
そこでSpring Web MVCのAuto Configurationの構成が気になったのでググってみたら、ちょうど最近その辺りを読み解いた方がいました。
Spring BootでのWebMvcのJavaコンフィグレーション
が、読んだだけだと全然頭に入ってこなかったので、クラス図を書きました。
クラス図
この図の内容を見ながら以下を読んで、ようやく全体が掴めました。
@EnableWebMvc
を付けると、DelegatingWebMvcConfigurationクラスがインポートされる- DelegatingWebMvcConfigurationクラスは、WebMvcConfigurationSupportを継承している
- DelegatingWebMvcConfigurationクラスは、WebMvcConfigurerCompositeを生成・保持する
- WebMvcConfigurerCompositeクラスは、WebMvcConfigurerを実装している
- WebMvcAutoconfigurationAdapterクラスにおいて、EnableWebMvcConfigurationクラスがインポートされる
- WebMvcAutoConfigurationクラスは、WebMvcAutoConfigurationAdapterクラスとEnableWebMvcConfigurationクラスを保持する
- WebMvcAutoconfigurationAdapterクラスは、WebMvcConfigurerを実装している
- EnableWebMvcConfigurationクラスは、DelegatingWebMvcConfigurationクラスを継承している
関連クラスのソースコードとドキュメントのリンク
関連するクラスが多かったので、ドキュメントやソースコードをまとめておきます。
Spring Web MVCのJavaDocは5.0.8.RELEASE、ソースコードは5.0.xのブランチへのリンクです。
Spring BootのJavaDocは2.0.4.RELEASE、ソースコードは2.0.xのブランチへのリンクです。