WebMvcConfigurationSupport 详解

四个MVC配置类的关系

WebMvcConfigurerAdapter
WebMvcConfigurer
WebMvcConfigurationSupport
WebMvcAutoConfiguration

  • WebMvcConfigurer 为接口
  • WebMvcConfigurerAdapter 是 WebMvcConfigurer 的实现类大部分为空方法,是 WebMvcConfigurer的子类实现,由于Java8中可以使用default关键字为接口添加默认方法,为在源代码中spring5.0之后就已经弃用本类,如果需要我接着可以实现WebMvcConfigurer类。
  • WebMvcConfigurationSupport 是mvc的基本实现并包含了WebMvcConfigurer接口中的方法
  • WebMvcAutoConfiguration 是mvc的自动装在类并部分包含了WebMvcConfigurer接口中的方法
  • 如果在springboot项目中没有使用到以上类,那么会自动启用WebMvcAutoConfiguration类做自动加载;
    项目中的配置都是默认的,比如静态资源文件的访问

重写WebMvcConfigurationSupport后SpringBoot自动配置失效

意思是在spring上下文容器内没有这个bean,那么webMvcAutoConfiguration这个类才会生效。
在这里插入图片描述

WebMvcConfigurationSupport 对应的方法

  /** 解决跨域问题 **/
void addCorsMappings(CorsRegistry registry) ;
   /** 添加拦截器 **/
void addInterceptors(InterceptorRegistry registry);
  /** 视图跳转控制器 **/
void addViewControllers(ViewControllerRegistry registry);
/** 这里配置视图解析器 **/
void configureViewResolvers(ViewResolverRegistry registry);
 /** 配置内容裁决的一些选项 **/
void configureContentNegotiation(
       ContentNegotiationConfigurer configurer);
   /** 视图跳转控制器 **/
void addViewControllers(
        ViewControllerRegistry registry);
  /** 静态资源处理 避免静态资源被拦截**/
void addResourceHandlers(
       ResourceHandlerRegistry registry);
    /** 默认静态资源处理器 **/
void configureDefaultServletHandling(
    DefaultServletHandlerConfigurer configurer);

MVC 最佳实践

方式1:@EnableWebMvc
方式2: 继承WebMvcConfigurationSupport 但是没有汇集项目中WebMvcConfigure接口实现类的功能的
方式3: 继承 DelegatingWebMvcConfiguration 是WebMvcConfigurationSupport的拓展子类,如果项目中也存在其他实现WebMvcConfigurer接口来提供配置的类,则可以继承DelegatingWebMvcConfiguration来替代@EnableWebMvc,两者提供的功能是一样的。

可以在配置类加上@EnableWebMvc注解之外,也可以直接继承WebMvcConfigurationSupport或DelegatingWebMvcConfiguration,而不使用@EnableWebMvc注解,因为@EnableWebMvc内部也是使用WebMvcConfigurationSupport来完成SpringMVC默认配置的添加的。

1:如果项目中没有通过使用WebMvcConfigurer接口的实现类来提供SpringMVC的配置,则可以只使用一个WebMvcConfigurationSupport的子类来启动和自定义SpringMVC的功能。因为@EnableWebMvc其实还有一个功能是汇集项目中所有实现了WebMvcConfigurer接口的类

EnableWebMvc 实现原理

实际上是导入了 DelegatingWebMvcConfiguration 配置类,等价于 @Configuration + 继承该类
在这里插入图片描述

Spring Boot 是一个快速构建Spring应用程序的开发框架。在Spring Boot中,可以轻松地使用注解和配置来进行日期格式化。全局日期格式化可以确保应用程序中的所有日期在显示和解析时都遵循相同的格式。 要实现全局日期格式化,首先需要创建一个自定义的日期格式化器。可以通过创建一个继承自 WebMvcConfigurationSupport 的类,并覆盖其方法来实现自定义日期格式化器。在该类中,可以调用 setDateFormatter 方法来设置日期格式化器,将日期格式化模式作为参数传递给自定义日期格式化器。 例如,假设想在应用程序中将日期格式化为"yyyy-MM-dd"格式。可以创建一个 CustomDateFormatter 类,实现 DateFormatter 接口,并在实现类的 toFormatter 方法中设置日期格式化模式为"yyyy-MM-dd"。然后,在自定义的 WebMvcConfigurationSupport 类中,覆盖其 configureMessageConverters 方法,并在该方法中调用 setDateFormatter 方法来设置日期格式化器为 CustomDateFormatter。 在应用程序中任何地方,只需要使用 @DateTimeFormat 注解,并指定日期格式即可将日期解析为指定格式。同样地,使用该注解在返回对象上,可以将日期字段格式化为指定格式。 总而言之,Spring Boot 提供了全局日期格式化的机制,使得应用程序中的日期在显示和解析时都能遵循统一的格式。通过自定义日期格式化器,可以轻松地实现指定的日期格式,并在应用程序中使用 @DateTimeFormat 注解来格式化和解析日期。这样,可以确保应用程序中的日期始终遵循相同的格式要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值