What is `WebMvcConfigurer` does?

WebMvcConfigurer 用于自定义和扩展SpringMVC的功能配置。
比如:可以配置如视图解析器、静态资源处理、消息转换器、拦截器等MVC相关的组件。

实现 WebMvcConfigurer 接口,并使用 @Configuration 注解标记,使其成为一个配置类

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
   

[实践总结] 拦截器配置(Interceptors)

    @Autowired
    private ResponsePostInterceptor responsePostInterceptor;

    /**
     * 为拦截器注册表添加拦截器
     *
     * @param registry 拦截器注册表
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
   
        // 在Spring MVC配置中注册一个名为responsePostInterceptor的拦截器,
        // 使其能够对匹配路径“/**”(即对应用程序中的所有路径)的请求进行拦截
        registry.addInterceptor(responsePostInterceptor).addPathPatterns("/**");
    }

视图控制器(View Controllers)
可以添加一些默认的路由规则,当请求特定URL时自动转发到指定视图。

    /**
     * 向控制器注册表中添加视图控制器
     *
     * @param registry 控制器注册表
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
   
        //对于index.html的请求,设置返回的视图为index.htl
        registry.addViewController("/index.html").setViewName("/index.htl");
        //所有以.do结尾的请求重定向到/index.html请求
        registry.addRedirectViewController("/**/*.do", "/index.html");
    }

静态资源处理(Static Resources)
可以配置静态资源如CSS、JavaScript等文件的映射路径

    /**
     * 用于添加资源处理器
     *
     * @param registry 资源处理器注册表
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
   
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("classpath:/static/resources/")
                .setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS));
    }

视图解析器(View Resolvers)
可以配置视图解析器链,决定如何将处理结果映射到具体的视图模板。

    /**
     * 配置视图解析器(ViewResolver),用于在Spring应用程序中自定义如何解析视图
     */
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
   
        // 创建 InternalResourceViewResolver 对象
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        // 设置视图资源的前缀为 "/WEB-INF/views/"
        resolver.setPrefix("/WEB-INF/views/");
        // 设置视图资源的后缀为 ".jsp"
        resolver.setSuffix(".jsp");
        // 注册视图解析器
        registry.viewResolver(resolver);
    }

自定义配置HTTP消息转换器列表(Message Converters)

    /**
     * 用于自定义配置HTTP消息转换器列表
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
   
        // StringHttpMessageConverter主要用于处理HTTP请求和响应中的字符串类型数据
        converters.add(new StringHttpMessageConverter());
    }

为跨域访问添加映射(Cors Mappings)

    /**
     * 为跨域访问添加映射
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
   
        // 允许所有跨域访问
        registry.addMapping ("/**");

        // 更为精细的控制
        // 仅仅允许来自 domain2.com 的跨域访问,并且限定访问路径为api 、方法是 POST 或者 GET 。
        registry.addMapping("/api/**")
                .allowedOrigins("http://domain2.com")
                .allowedMethods("POST", "GET");
    }

日期格式转换器

    @Override
    public void addFormatters(FormatterRegistry registry) {
   
        //注册一个日期格式转换器
        registry.addConverter(String.class, Date.class, DateUtils::parseDate);
    }

[Ref] springboot-WebMvcConfigurer配置拦截器/跨域/格式化/注册控制器

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 22:08:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 22:08:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 22:08:01       87 阅读
  4. Python语言-面向对象

    2024-01-13 22:08:01       96 阅读

热门阅读

  1. Python学习之路-函数进阶

    2024-01-13 22:08:01       65 阅读
  2. springboot 注解+AOP实现接口方法出入参打印

    2024-01-13 22:08:01       68 阅读
  3. 力扣labuladong——一刷day91

    2024-01-13 22:08:01       66 阅读
  4. apply、call、bind的区别 如何实现一个bind

    2024-01-13 22:08:01       68 阅读
  5. PC-lint Plus在安全系统中的应用

    2024-01-13 22:08:01       45 阅读
  6. C语言版数据结构与算法pta合集:7-3 括号匹配

    2024-01-13 22:08:01       60 阅读
  7. 【已解决】C语言如何使用宽字符输出中文

    2024-01-13 22:08:01       64 阅读
  8. mysql修复VIEWRESIDENTHIST 数据

    2024-01-13 22:08:01       59 阅读
  9. Linux数据处理的几个命令

    2024-01-13 22:08:01       94 阅读
  10. 教师如何开发期末考试成绩的查询系统

    2024-01-13 22:08:01       66 阅读
  11. xtu oj 1522 格子

    2024-01-13 22:08:01       57 阅读
  12. 标准 C++ 数据类型和 C++/WinRT

    2024-01-13 22:08:01       56 阅读