WebMvcConfig.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.wsm.common.config;
  2. import com.alibaba.fastjson.serializer.SerializerFeature;
  3. import com.alibaba.fastjson.support.config.FastJsonConfig;
  4. import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4;
  5. import com.wsm.common.interceptor.CommonInterceptor;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import org.springframework.http.MediaType;
  11. import org.springframework.http.converter.HttpMessageConverter;
  12. import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;
  13. import org.springframework.web.servlet.config.annotation.CorsRegistry;
  14. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  15. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. @Configuration
  19. public class WebMvcConfig extends WebMvcConfigurerAdapter {
  20. @Autowired
  21. private CommonInterceptor commonInterceptor;
  22. /**
  23. * fastJson相关设置
  24. */
  25. private FastJsonConfig getFastJsonConfig() {
  26. FastJsonConfig fastJsonConfig = new FastJsonConfig();
  27. // 在serializerFeatureList中添加转换规则
  28. List<SerializerFeature> serializerFeatureList = new ArrayList<SerializerFeature>();
  29. serializerFeatureList.add(SerializerFeature.PrettyFormat);
  30. serializerFeatureList.add(SerializerFeature.WriteMapNullValue);
  31. serializerFeatureList.add(SerializerFeature.WriteNullStringAsEmpty);
  32. serializerFeatureList.add(SerializerFeature.WriteNullListAsEmpty);
  33. serializerFeatureList.add(SerializerFeature.DisableCircularReferenceDetect);
  34. SerializerFeature[] serializerFeatures = serializerFeatureList.toArray(new SerializerFeature[serializerFeatureList.size()]);
  35. fastJsonConfig.setSerializerFeatures(serializerFeatures);
  36. fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
  37. return fastJsonConfig;
  38. }
  39. /**
  40. * fastJson相关设置
  41. */
  42. private FastJsonHttpMessageConverter4 fastJsonHttpMessageConverter() {
  43. FastJsonHttpMessageConverter4 fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter4();
  44. List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
  45. supportedMediaTypes.add(MediaType.parseMediaType("text/html;charset=UTF-8"));
  46. supportedMediaTypes.add(MediaType.parseMediaType("application/json"));
  47. fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
  48. fastJsonHttpMessageConverter.setFastJsonConfig(getFastJsonConfig());
  49. return fastJsonHttpMessageConverter;
  50. }
  51. /**
  52. * 添加fastJsonHttpMessageConverter到converters
  53. */
  54. @Override
  55. public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
  56. converters.add(fastJsonHttpMessageConverter());
  57. }
  58. /**
  59. * 添加拦截器
  60. */
  61. @Override
  62. public void addInterceptors(InterceptorRegistry registry) {
  63. registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
  64. super.addInterceptors(registry);
  65. }
  66. @Bean
  67. public FilterRegistrationBean registFilter() {
  68. FilterRegistrationBean registration = new FilterRegistrationBean();
  69. registration.setFilter(new OpenEntityManagerInViewFilter());
  70. registration.addUrlPatterns("/*");
  71. registration.setOrder(1);
  72. return registration;
  73. }
  74. @Override
  75. public void addCorsMappings(CorsRegistry registry) {
  76. registry.addMapping("/**")
  77. .allowedOrigins("*")
  78. .allowCredentials(true)
  79. .allowedMethods("GET", "POST", "DELETE", "PUT")
  80. .maxAge(3600);
  81. }
  82. }