spring boot 中WebMvcConfigurer相关使用总结

简介: spring boot 中WebMvcConfigurer相关使用总结

本文为博主原创,未经允许不得转载:

  WebMvcConfigurer 为spring boot中的一个接口,用来配置web相关的属性或工具插件,比如消息转换器,拦截器,视图处理器,跨域设置等等。

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

    官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐),

    方式二继承WebMvcConfigurationSupport类,具体实现可看这篇文章。https://blog.csdn.net/fmwind/article/details/82832758

其中定义的方法如下,可以根据其中定义的方法,进行对应的封装和实现。

 

 

下面列出经常使用的场景及封装的方法:

1.消息类型转换器

2.配置拦截器

3.进行spring validation 验证

4.默认跳转视图配置

5.静态资源跳转

6.跨域设置

package com.lf.mp.test;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.lang.Nullable;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import javax.servlet.Filter;
import java.nio.charset.Charset;
import java.util.List;
@EnableWebMvc
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
    // 自定义消息类型转换器
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new StringHttpMessageConverter(Charset.defaultCharset()));
        converters.add(jsonHttpMessageConverter());
    }
    // spring中创建 FastJsonHttpMessageConverter bean
    @Bean
    public FastJsonHttpMessageConverter jsonHttpMessageConverter() {
        return new FastJsonHttpMessageConverter();
    }
    /**
     *  配置拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TestInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin", "/emp/login", "/js/**", "/css/**", "/images/**");
    }
    @Bean
    public Filter characterEncodingFilter() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true);
        return filter;
    }
    @Nullable
    @Override
    public Validator getValidator() {
        return new LocalValidatorFactoryBean();
    }
    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }
    /**
     * 默认跳转到视图
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }
    /**
     * 视图处理器
     */
    @Bean
    public InternalResourceViewResolver configureInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
    /**
     * 静态资源跳转
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        // 一些系统的静态配置
        registry.addResourceHandler("/data/**").addResourceLocations("file:/home/pplive/data/");
    }
    /**
     *  跨域设置
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/cors/**")
                .allowedHeaders("*")
                .allowedMethods("POST", "GET")
                .allowedOrigins("*");
    }
}

 

标签: spring boot

目录
相关文章
|
22天前
|
前端开发 Java 开发者
【springboot】中使用--WebMvcConfigurer
通过实现 `WebMvcConfigurer` 接口,Spring Boot 开发者可以灵活地自定义和扩展 Spring MVC 的配置。无论是视图解析、拦截器、跨域请求处理,还是静态资源和消息转换器配置,`WebMvcConfigurer` 都提供了一致的接口来实现这些功能。掌握这些配置方法,可以使开发者在 Spring Boot 项目中更加游刃有余地进行各种定制化需求的开发。
38 14
WXM
|
5月前
|
XML Java 数据格式
|
9月前
|
Java
springboot WebMvcConfigurer详解自定义配置请求静态资源
springboot WebMvcConfigurer详解自定义配置请求静态资源
204 0
|
XML Java 数据格式
AS3 IOC框架Spring Actionscript 的使用总结
AS3 IOC框架Spring Actionscript 的使用总结
69 0
|
Java
【SpringBoot】WebMvcConfigurer实现类不被加载(o.s.web.servlet.PageNotFound : No mapping for GET)的问题解决
【SpringBoot】WebMvcConfigurer实现类不被加载(o.s.web.servlet.PageNotFound : No mapping for GET)的问题解决
1180 0
|
Java 容器
SpringBoot - WebMvcConfigurationSupport & WebMvcConfigurer 共存问题
SpringBoot - WebMvcConfigurationSupport & WebMvcConfigurer 共存问题
221 0
|
Java fastjson Spring
精通SpringBoot——第三篇:详解WebMvcConfigurer接口
精通spring boot 之WebMvcConfigurer接口的实现
75944 0
|
Java Spring
spring boot InitializingBean接口使用总结
这里举一个粟子:初始化时缓存初始数据到redis 实现InitializingBean接口的afterPropertiesSet方法,当启动时将所有需要缓存的数据缓存到redis中。
2085 0
|
29天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
233 17
Spring Boot 两种部署到服务器的方式