37、SpringBoot为 Spring MVC 提供的自动配置及对自动配置的一些自定义定制(大体思路)

SpringBoot为 Spring MVC 提供的自动配置及对自动配置的一些自定义定制(大体思路)


Spring Boot主流支持两个MVC框架:

Spring MVC(基于Servlet)

Spring WebFlux(基于Reactive,属于响应式API)

Spring Boot 为 Spring MVC提供了哪些自动配置

Spring MVC的自动配置主要由WebMvcAutoConfiguration自动配置类负责提供支持。


Spring Boot为Spring MVC自动配置大致提供了如下功能:

1、引入了ContentNegotiatingViewResolver和BeanNameViewResolver。
(两个典型的视图解析器:负责将String类型的逻辑视图名解析成实际View对象)

2、对服务器静态资源提供支持,包括对WebJars的支持。

3、 自动注册 Converter、GenericConverter、Formatter这些Bean。
(类型转换、格式化器)

4、支持使用HttpMessageConverters来注册HttpMessageConverter。

HttpMessageConverter它主要负责完成String类型的请求参数与JSON数据、XML数据之间的相互转换。

HttpMessageConverter最常用的实现是基于Jackson或Jackson XML

5、自动注册 MessageCodeResolver。

6、支持静态的index.html首页。

7、自定义Favicon支持。用于为应用指定图标

8、ConfigurableWebBindingInitializer Bean的自动使用。


上面这些内容,基本上就是Spring MVC开发时所需的各种基础Bean,因此Spring Boot为Spring MVC提供大量的自动配置。


对自动配置进行定制

如果觉得SpringBoot对 Spring MVC 的一些自动配置不满意,我们还可以对这些自动配置进行定制。


定制方式一:

若要在保留自动配置的基础上增加一些自定义的Spring MVC配置(例如添加拦截器、格式化器、视图控制器等),

则可通过实现自己的WebMvcConfigurer类,并使用@Configuration注解修饰该类、但不要使用@EnableWebMvc注解修饰。


实现该类的如下方法:
 - addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers):添加参数解析器
 - addFormatters(FormatterRegistry registry):添加格式化器
 - addInterceptors(InterceptorRegistry registry):添加拦截器。
 - addViewControllers(ViewControllerRegistry registry):添加视图控制器
 - addResourceHandlers: 添加额外的静态资源处理目录。

代码演示:

若要在保留自动配置的基础上增加一些自定义的Spring MVC配置,可以这些写,这里只是弄个框架。

在这里插入图片描述


定制方式二:

如果要实现自定义RequestMappingHandlerMapping、RequestMappingHandlerAdapter或ExceptionHandlerExceptionResolver
来代替自动配置的这些Bean。

RequestMappingHandlerMapping :根据@RequestMapping注解负责请求映射到指定控制器的指定处理方法。

RequestMappingHandlerAdapter :它是配合RequestMappingHandlerMapping使用。

ExceptionHandlerExceptionResolver: 它主要做异常解析,它主要为@ExceptionHandler注解修饰的异常处理方法来提供支持。

要通过定义WebMvcRegistrations Bean来注册它们。


代码演示:

在这里插入图片描述


定制方式三:

本质:用自定义的Bean,取代Spring Boot为Spring MVC自动配置的Bean

配置自定义的ConfigurableWebBindingInitializer,它会取代自动配置的WebBindingInitializer;

WebBindingInitializer它也是Spring MVC本身的API,

它的作用就是为每个请求都初始化一个WebBinder,而WebBinder就负责完成数据绑定。


代码演示:

在这里插入图片描述


全面接管(放弃自动配置)——极少使用

如果使用@Configuration和@EnableWebMvc注解同时修饰自己的Spring MVC配置类。

这意味着完全关闭了Spring Boot为Spring MVC的自动配置,开发者必须手动完成所有关于Spring MVC的配置工作。

但是我们使用 SpringBoot 就是为了它的自动配置方便。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值