package com.wsm.common.config; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4; import com.wsm.common.interceptor.CommonInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import java.util.ArrayList; import java.util.List; @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Autowired private CommonInterceptor commonInterceptor; /** * fastJson相关设置 */ private FastJsonConfig getFastJsonConfig() { FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 在serializerFeatureList中添加转换规则 List serializerFeatureList = new ArrayList(); serializerFeatureList.add(SerializerFeature.PrettyFormat); serializerFeatureList.add(SerializerFeature.WriteMapNullValue); serializerFeatureList.add(SerializerFeature.WriteNullStringAsEmpty); serializerFeatureList.add(SerializerFeature.WriteNullListAsEmpty); serializerFeatureList.add(SerializerFeature.DisableCircularReferenceDetect); SerializerFeature[] serializerFeatures = serializerFeatureList.toArray(new SerializerFeature[serializerFeatureList.size()]); fastJsonConfig.setSerializerFeatures(serializerFeatures); fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); return fastJsonConfig; } /** * fastJson相关设置 */ private FastJsonHttpMessageConverter4 fastJsonHttpMessageConverter() { FastJsonHttpMessageConverter4 fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter4(); List supportedMediaTypes = new ArrayList(); supportedMediaTypes.add(MediaType.parseMediaType("text/html;charset=UTF-8")); supportedMediaTypes.add(MediaType.parseMediaType("application/json")); fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes); fastJsonHttpMessageConverter.setFastJsonConfig(getFastJsonConfig()); return fastJsonHttpMessageConverter; } /** * 添加fastJsonHttpMessageConverter到converters */ @Override public void configureMessageConverters(List> converters) { converters.add(fastJsonHttpMessageConverter()); } /** * 添加拦截器 */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(commonInterceptor).addPathPatterns("/**"); super.addInterceptors(registry); } @Bean public FilterRegistrationBean registFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new OpenEntityManagerInViewFilter()); registration.addUrlPatterns("/*"); registration.setOrder(1); return registration; } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT") .maxAge(3600); } }