Spring Boot MVC設定
削除されたWebMvcConfigurerAdapterをWebMvcConfigurerに置き換え、Spring BootのMVC自動構成を維持する。
コード比較
✕ Spring Boot 1.x
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(
ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
✓ Spring Boot 4.x
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(
ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
削除されたAdapterが不要
WebMvcConfigurerがデフォルトメソッドを提供するため、拡張するAdapterスーパークラスは不要です。
Bootのデフォルトを維持
@EnableWebMvcを使用しなければ、Spring Bootは引き続きMVCインフラストラクチャを自動構成します。
必要な箇所だけをオーバーライド
インターフェースを実装し、アプリケーションに必要なMVCフックだけをカスタマイズします。
旧来のアプローチ
@EnableWebMvcを使用したWebMvcConfigurerAdapter
モダンなアプローチ
Spring Bootの自動構成を使用したWebMvcConfigurer
JDKバージョン
17
難易度
初級
JDKサポート
Spring Boot MVC設定
利用可能
Spring Framework 7.0を使用するSpring Boot 4.0(Java 17以上が必要)以降、利用可能
仕組み
Javaインターフェースがデフォルトメソッドを提供できなかったため、Spring Boot 1.xアプリケーションではWebMvcConfigurerAdapterを拡張するのが一般的でした。モダンなSpring FrameworkではWebMvcConfigurer上でデフォルト実装が直接提供されるため、このインターフェースを実装し、必要なメソッドだけをオーバーライドします。Spring Bootアプリケーションでは、MVC設定を意図的に完全制御する場合を除き、@EnableWebMvcを追加しないでください。追加すると、通常のコンバーター、静的リソース処理、その他のデフォルトを含むBootのMVC自動構成が無効になります。
関連ドキュメント
証明