Spring Web MVCのAuto Configuration周辺のクラス図を描いてみた

Spring BootでWeb MVCを使う場合、@EnableWebMvcを使うとAuto Configurationの一部が無効化されてしまうため、原則付けないほうが良い(公式ドキュメント)とされています。

そこでSpring Web MVCのAuto Configurationの構成が気になったのでググってみたら、ちょうど最近その辺りを読み解いた方がいました。

Spring BootでのWebMvcのJavaコンフィグレーション

が、読んだだけだと全然頭に入ってこなかったので、クラス図を書きました。

クラス図

Spring Web MVCのAuto Configuration周りのクラス図

この図の内容を見ながら以下を読んで、ようやく全体が掴めました。

  • @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のブランチへのリンクです。

関連記事


  1. Spring Web MVCのViewでExcelを生成して返す
  2. Spring Web MVCのViewでPDFを生成して返す
  3. ModelMapperで1対1に対応しないフィールドのマッピング
  4. Spring Boot アノテーション集
  5. Spring BootアプリにFlywayを導入してみた
  6. Spring BootをGoogle App Engineフレキシブル環境へデプロイする
  7. Spring BootをGoogle App Engineスタンダード環境にデプロイする