SpringBoot对Spring MVC都做了哪些事?

Spring Boot为Spring MVC提供了自动配置,包括ContentNegotiatingViewResolver、HttpMessageConverters、静态内容支持和自定义JSON序列化。可以通过自定义WebMvcConfigurer实现额外的MVC配置,如拦截器、格式化器。默认从/static目录提供静态内容,可通过配置调整。支持模板引擎如Thymeleaf。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:Springboot2.4.12

Spring MVC自动配置

Spring Boot为Spring MVC提供了自动配置,可以很好地与大多数应用程序配合使用。

自动配置在Spring默认设置的基础上添加了以下功能:

  • 包含 ContentNegotiatingViewResolver 和 BeanNameViewResolver bean 。
  • 支持提供静态资源,包括对WebJars的支持(本文档后面会讲到)。
  • Converter 、 GenericConverter 和 Formatter bean的自动注册。
  • 对 HttpMessageConverters 的支持(本文档后面会讲到)。
  • 自动注册 MessageCodesResolver (本文档后面将介绍)。
  • 静态 index.html 的支持。
  • 自动使用 ConfigurableWebBindingInitializer bean(本文档后面将介绍)。

如果你想保留那些Spring Boot MVC自定义,并做更多的MVC自定义(拦截器、格式化器、视图控制器和其他特性),你可以添加你自己的WebMvcConfigurer类型的@Configuration类,但不需要@EnableWebMvc。

如果你想提供RequestMappingHandlerMapping、RequestMappingHandlerAdapter或ExceptionHandlerExceptionResolver的自定义实例,并且仍然保持Spring Boot MVC自定义,你可以声明一个WebMvcRegistrations类型的bean,并使用它来提供这些组件的自定义实例。

上面这段什么意思?就是我们可以自定义一个Class实现WebMvcRegistrations接口实现自定义的上面的RequestMappingHandlerMapping等相关的类。

WebMvcRegistrations 接口

public interface WebMvcRegistrations {
  default RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
    return null;
  }
  default RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {
    return null;
  }
  default ExceptionHandlerExceptionResolver getExceptionHandlerExceptionResolver() {
    return null;
  }
}

自动配置中又是如何使用(知道)我们自定义的这个WebMvcRegistrations 类呢?

@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(WebProperties.class)
public static class EnableWebMvcConfiguration extends DelegatingWebMvcConfiguration implements ResourceLoaderAware {
  // 注入自定义的WebMvcRegistrations
  private final WebMvcRegistrations mvcRegistrations;
  public EnableWebMvcConfiguration(ObjectProvider<WebMvcRegistrations> mvcRegistrations) {
    // ...
    this.mvcRegistrations = mvcRegistrationsProvider.getIfUnique();
  }
}

这里RequestMappingHandlerMapping 为例说明自动配置是如何使用自定义的。接着上面的类中,有如下方法定义。

@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(WebPro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值