Enterprise 初級

削除された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
難易度
初級
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自動構成が無効になります。