开发过程中中文一直是???显示,根据网上的帖子修改配置文件后也没有效果。后来偶然间看到一篇文章,把fastjson改为默认序列化插件,加入后就没有问题了。
![](https://i-blog.csdnimg.cn/blog_migrate/0fec5089fc65ab21c4d44ebb6c2ac77a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4cd85ab1d1a76f6fc86b7d21e5bfeac6.gif)
1 package com.leenleda.ward.tv.admin.interceptor;
2
3 import com.alibaba.fastjson.serializer.SerializerFeature;
4 import com.alibaba.fastjson.support.config.FastJsonConfig;
5 import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
6 import com.leenleda.ward.tv.common.config.LeenledaConfig;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.context.annotation.Configuration;
9 import org.springframework.http.MediaType;
10 import org.springframework.http.converter.HttpMessageConverter;
11 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
12 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
13 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
14 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
15 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
16
17 import javax.annotation.Resource;
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.List;
21
22
23 /**
24 * @Author: pengbenlei
25 * @Date: 2020/2/19 11:22
26 * @Description:
27 */
28 @Configuration
29 @EnableWebMvc
30 public class CustomMVCConfiguration implements WebMvcConfigurer {
31
32 @Resource
33 LoginInterceptor loginInterceptor;
34
35 @Autowired
36 LeenledaConfig leenledaConfig;
37
38 @Override
39 public void addInterceptors(InterceptorRegistry registry) {
40 //登录拦截器
41 registry.addInterceptor(loginInterceptor).addPathPatterns("/admin/**").excludePathPatterns(Arrays.asList("/file/**"));
42 }
43
44 /**
45 * 添加静态资源文件,外部可以直接访问地址
46 *
47 * @param registry
48 */
49 @Override
50 public void addResourceHandlers(ResourceHandlerRegistry registry) {
51 String locationPath = "file:" + leenledaConfig.getLeenledaUploadRoot() + "/leenleda/application/";
52 registry.addResourceHandler("/file/**")
53 .addResourceLocations(locationPath);
54 }
55
56 @Override
57 public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
58
59 for (int i = converters.size() - 1; i >= 0; i--) {
60 if (converters.get(i) instanceof MappingJackson2HttpMessageConverter) {
61 converters.remove(i);
62 }
63 }
64 FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
65 FastJsonConfig config = new FastJsonConfig();
66 config.setSerializerFeatures(
67 SerializerFeature.WriteMapNullValue, // 是否输出值为null的字段,默认为false
68 SerializerFeature.WriteNullListAsEmpty, // 将Collection类型字段的字段空值输出为[]
69 SerializerFeature.WriteNullStringAsEmpty, // 将字符串类型字段的空值输出为空字符串
70 SerializerFeature.WriteNullNumberAsZero, // 将数值类型字段的空值输出为0
71 SerializerFeature.WriteDateUseDateFormat,
72 SerializerFeature.DisableCircularReferenceDetect // 禁用循环引用
73 );
74 fastJsonHttpMessageConverter.setFastJsonConfig(config);
75 // 添加支持的MediaTypes;不添加时默认为*/*,也就是默认支持全部
76 // 但是MappingJackson2HttpMessageConverter里面支持的MediaTypes为application/json
77 // 参考它的做法, fastjson也只添加application/json的MediaType
78 List<MediaType> fastMediaTypes = new ArrayList<>();
79 fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
80 fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
81 converters.add(fastJsonHttpMessageConverter);
82 }
83
84 }