WebMvcConfigurer配置详解

这篇具有很好参考价值的文章主要介绍了WebMvcConfigurer配置详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

        WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;

        在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。

        官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐),方式二继承WebMvcConfigurationSupport类,具体实现可看这篇文章。https://blog.csdn.net/fmwind/article/details/82832758

二、WebMvcConfigurerAdapter类被弃用后的两种选择

1、过时方式:继承WebMvcConfigurerAdapter

Spring 5.0 以后WebMvcConfigurerAdapter会取消掉。
WebMvcConfigurerAdapter是实现WebMvcConfigurer接口

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    //TODO
}

2、现用方式

1)实现WebMvcConfigurer

@Configuration
public class WebMvcConfg implements WebMvcConfigurer {
    //TODO
}

2)现用方式:继承WebMvcConfigurationSupport

@Configuration
public class WebMvcConfg extends WebMvcConfigurationSupport {
    //TODO
}
 

3、另外参考:

WebMvcConfigurerAdapter类被弃用后的两种选择 - 掘金

三、WebMvcConfigurer接口

全部接口

public interface WebMvcConfigurer {
    void configurePathMatch(PathMatchConfigurer var1);
 
    void configureContentNegotiation(ContentNegotiationConfigurer var1);
 
    void configureAsyncSupport(AsyncSupportConfigurer var1);
 
    void configureDefaultServletHandling(DefaultServletHandlerConfigurer var1);
 
    void addFormatters(FormatterRegistry var1);
 
    void addInterceptors(InterceptorRegistry var1);
 
    void addResourceHandlers(ResourceHandlerRegistry var1);
 
    void addCorsMappings(CorsRegistry var1);
 
    void addViewControllers(ViewControllerRegistry var1);
 
    void configureViewResolvers(ViewResolverRegistry var1);
 
    void addArgumentResolvers(List<HandlerMethodArgumentResolver> var1);
 
    void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> var1);
 
    void configureMessageConverters(List<HttpMessageConverter<?>> var1);
 
    void extendMessageConverters(List<HttpMessageConverter<?>> var1);
 
    void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);
 
    void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);
 
    Validator getValidator();
 
    MessageCodesResolver getMessageCodesResolver();
}

常用的方法

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

四、接口说明

2.1 addInterceptors:拦截器

  • addInterceptor:需要一个实现HandlerInterceptor接口的拦截器实例
  • addPathPatterns:用于设置拦截器的过滤路径规则;addPathPatterns("/**")对所有请求都拦截
  • excludePathPatterns:用于设置不需要拦截的过滤规则
  • 拦截器主要用途:进行用户登录状态的拦截,日志的拦截等。
@Override
public void addInterceptors(InterceptorRegistry registry) {
    super.addInterceptors(registry);
    registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**");
}

例如,此方法用来专门注册一个Interceptor,如HandlerInterceptorAdapter文章来源地址https://www.toymoban.com/news/detail-824130.html

@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer { 
@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**");
    }
}
  • addPathPatterns("/**")对所有请求都拦截,但是排除了/toLogin和/login请求的拦截

到了这里,关于WebMvcConfigurer配置详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot 项目访问静态资源遇到的问题,WebMvcConfigurer和WebMvcConfigurationSupport

    之前发过通过继承WebMvcConfigurationSupport来访问静态资源的文章——img标签访问静态资源,代码如下 这个方法是可行的,但会带来一个小问题。 像这些本身就要访问静态资源的,它们一般是实现了WebMvcConfigurer,而不是继承WebMvcConfigurationSupport。 当我们用上面代码中的方法访问

    2024年01月21日
    浏览(47)
  • 【SpringBoot】WebMvcConfigurer实现类不被加载(o.s.web.servlet.PageNotFound : No mapping for GET)的问题解决

    运行springboot项目的时候发现,明明访问的是一个页面,但是却被当作一个请求去处理了。 那么可以考虑到应该是资源文件没有被加载,或者说资源文件的映射没有被加载。 所以问题肯定可以缩小到是WebMvcConfigurer的实现类或者WebMvcConfigurationSupport的子类中的加载资源文件的方

    2024年02月14日
    浏览(30)
  • onceperrequestfilter 和 webmvcconfigurer 区别

    在使用Spring框架进行Web开发的时候,我们经常会遇到需要对每个请求做一些统一的处理的情况。例如,我们可能需要在每个请求到达Controller之前进行身份验证,或者在每个请求结束后记录请求的日志信息。这时候,我们可以使用两种不同的方式来实现这些功能:onceperrequest

    2024年02月06日
    浏览(21)
  • What is `WebMvcConfigurer` does?

    WebMvcConfigurer 用于自定义和扩展 SpringMVC 的功能配置。 比如:可以配置如视图解析器、静态资源处理、消息转换器、拦截器等MVC相关的组件。 实现 WebMvcConfigurer 接口,并使用 @Configuration 注解标记,使其成为一个配置类 [实践总结] 拦截器配置(Interceptors) 视图控制器(View C

    2024年01月16日
    浏览(33)
  • What is `addFormattersdoes` in `WebMvcConfigurer` ?

    addFormatters 方法在 SpringMVC 框架中主要用于向 Spring容器 注册自定义的 格式化器(Formatter) SpringMVC 内置了一系列的标准格式化器,用于处理日期、数字和其他常见类型的转换。 开发者也可以通过实现 WebMvcConfigurer 接口,并重写其中的 addFormatters 方法来添加 自定义格式化器 。

    2024年01月18日
    浏览(28)
  • What is `addArgumentResolvers` does in `WebMvcConfigurer` ?

    addArgumentResolvers 在 SpringMVC 框架中,主要用于向 Spring容器 注册自定义的参数解析器。在处理 HTTP请求 时, SpringMVC 会使用这些参数解析器将请求中的数据(如查询参数、路径变量、表单数据等)转换并注入到控制器方法的参数中。 http://localhost:8080/customDateArgumentResolver?date=20

    2024年02月01日
    浏览(95)
  • 【Java Spring】SpringBoot Bean详解

    上一节我们介绍了五大类注解,这一节介绍方法注解@Bean,@Bean作用的对象是方法, 该注解需要搭配五大类注解同时进行使用 ,因为类方法的数量远远大于类的数量,如果使用@Bean注解标记方法的类没有被标记,那么Spring Boot项目在启动时需要遍历所有的类的所有方法,开销无

    2024年04月27日
    浏览(30)
  • java springboot yml文件配置 多环境yml

    如果是properties改用yml,直接新增一个 .yml ,删除原 .properties ,系统会自动扫描 application.properties 和 application.yml文件(如果同时存在两个文件,则会优先使用.properties文件?)。 注意:改了之后 需要maven 命令 clean一下 ,清个缓存。 一、yml多环境 如果需要配置多环境的配置

    2024年02月15日
    浏览(32)
  • Java SpringBoot 加载 yml 配置文件中字典项

    实际项目中,如果将该类信息放配置文件中的话,一般会结合Nocas一起使用 将字典数据,配置在 yml 文件中,通过加载yml将数据加载到 Map中 Spring Boot 中 yml 配置、引用其它 yml 中的配置。# 在配置文件目录(如:resources)下新建 application-xxx 必须以application开头的yml文件, 多个

    2023年04月19日
    浏览(38)
  • Java --- springboot3依赖管理和自动配置机制

    目录 一、依赖管理机制 二、自动配置机制  三、自动配置流程 🚕 、为什么导入 starter-web 所有相关依赖都导入进来? ①、开发什么场景,导入什么 场景启动器。 ②、maven依赖传递原则。A-B-C: A就拥有B和C ③、导入 场景启动器。 场景启动器 自动把这个场景的所有核心依赖

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包