WebMvcConfigurerAdapter
是 Spring Boot 1.x 版本中用于自定义 Spring MVC 配置的一个类。但在 Spring Boot 2.x 之后,这个类已经被标记为废弃,并推荐使用 WebMvcConfigurer
接口来替代。
WebMvcConfigurerAdapter
提供了默认的实现,使得你可以在无需扩展 WebMvcConfigurer
接口的情况下,覆盖默认的配置。其工作方式是,当你在类路径下扫描到 WebMvcConfigurerAdapter
时,Spring Boot 会自动调用它,并应用其配置。
以下是一个简单的 WebMvcConfigurerAdapter
的示例:
java复制代码
@Configuration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/public-resources/");
}
}
然而,从 Spring Boot 2.x 开始,为了更好地支持 Java 配置和减少样板代码,WebMvcConfigurerAdapter
被标记为废弃,并推荐使用 WebMvcConfigurer
接口。以下是使用 WebMvcConfigurer
的相同示例:
java复制代码
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/public-resources/");
}
}
这两种方式的主要区别在于 WebMvcConfigurerAdapter
是通过继承实现的配置,而 WebMvcConfigurer
是通过接口实现的配置。由于继承在 Java 中可能会导致一些问题(例如单一责任原则),因此推荐使用接口来配置。