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. ModelMapperで1対1に対応しないフィールドのマッピング
  2. Spring Boot アノテーション集
  3. Spring BootアプリにFlywayを導入してみた
  4. Spring BootをGoogle App Engineフレキシブル環境へデプロイする
  5. Spring BootをGoogle App Engineスタンダード環境にデプロイする
  6. 一部のパスだけSpring SecurityのCSRF対策を無効化する
  7. Spring Data JPAのgetOne()で遅延ロードエラー

comments powered by Disqus