package com.crm.rely.backend.configuration; import com.alibaba.fastjson.parser.Feature; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.crm.rely.backend.interceptor.LocaleInterceptor; import com.crm.rely.backend.interceptor.NoRepeatSubmitInterceptor; import com.crm.rely.backend.service.RedisService; import com.google.common.base.Strings; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.web.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.web.servlet.LocaleResolver; 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 org.springframework.web.servlet.i18n.SessionLocaleResolver; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Locale; /** * @author houn */ public class GlobalConfiguration extends WebMvcConfigurerAdapter { @Autowired private RedisService redisService; @Autowired private LocaleMessage localeMessage; /** * 设置返回 * * @param converters */ @Override public void configureMessageConverters(List> converters) { super.configureMessageConverters(converters); StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(); List mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.TEXT_PLAIN); mediaTypes.add(MediaType.TEXT_HTML); mediaTypes.add(MediaType.TEXT_XML); stringHttpMessageConverter.setSupportedMediaTypes(mediaTypes); stringHttpMessageConverter.setDefaultCharset(Charset.forName("UTF-8")); converters.add(stringHttpMessageConverter); } /** * fastJson格式化 * * @return */ @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { /** * 使用自定义时间格式化 继承FastJsonHttpMessageConverter */ CustomJsonHttpMessageConverter fasHttpMessageConverter = new CustomJsonHttpMessageConverter(); List supportedMediaTypes = new ArrayList<>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON); supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML); supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM); supportedMediaTypes.add(MediaType.APPLICATION_PDF); supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML); supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML); supportedMediaTypes.add(MediaType.APPLICATION_XML); supportedMediaTypes.add(MediaType.IMAGE_GIF); supportedMediaTypes.add(MediaType.IMAGE_JPEG); supportedMediaTypes.add(MediaType.IMAGE_PNG); supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM); supportedMediaTypes.add(MediaType.TEXT_MARKDOWN); fasHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty); fastJsonConfig.setFeatures( Feature.OrderedField); fasHttpMessageConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter converter = fasHttpMessageConverter; return new HttpMessageConverters(converter); } /** * 设置跨域 * * @param registry */ @Override public void addCorsMappings(CorsRegistry registry) { //设置允许跨域的路径 registry.addMapping("/**") //设置允许跨域请求的域名 .allowedOrigins("*") //是否允许证书 不再默认开启 .allowCredentials(true) //设置允许的方法 .allowedMethods("*") .allowedHeaders("*") //跨域允许时间 .maxAge(3600); } // @Override // public void addInterceptors(InterceptorRegistry registry) { // // // registry.addInterceptor(new NoRepeatSubmitInterceptor(redisService, localeMessage)).addPathPatterns("/**"); // super.addInterceptors(registry); // } @Bean LocaleInterceptor localeInterceptor() { return new LocaleInterceptor(); } @Bean public LocaleResolver localeResolver() { final SessionLocaleResolver localeResolver = new SessionLocaleResolver(); localeResolver.setDefaultLocale(new Locale("zh", "CN")); return localeResolver; } @Bean public TaskScheduler scheduledExecutorService() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(8); scheduler.setThreadNamePrefix("scheduled-thread-"); return scheduler; } }