springboot 开发遇到的问题
1. 通用 mapper 与 springboot 热部署冲突。
描述:出现xx类缺少xx方法
原因:类加载器不一样
解决方法:统一类加载器,或者换高版本的通用mapper
2. spring boot2 配置 FastJsonHttpMessageConverter 不起作用
描述:数据库数据为null时,前端显示也为null,不能显示空字符串
原因:SpringBoot 2.x版本中加载WebMvcConfigurer的顺序发生了变动,会优先执行MappingJackson2HttpMessageConverter,优先使用Jackson处理
解决方法: 指定FastJsonHttpMessageConverter在converters内的顺序,使用converters.add(0,fastJsonHttpMessageConverter)
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//1.需要定义一个convert转换消息的对象;
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//2.添加fastJson的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteDateUseDateFormat);
// System.out.println("111111111111111111111111111111111111111111111111111111111");
//3处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
//4.在convert中添加配置信息.
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
//5.将convert添加到converters当中.
//指定 fastJson 执行顺序,不然可能会用 jsonfast SpringBoot 2.0.1版本中加载WebMvcConfigurer的顺序发生了变动
// 故需使用converters.add(0, converter);指定FastJsonHttpMessageConverter在converters内的顺序,否则在SpringBoot 2.0.1及之后的版本中将优先使用Jackson处理
converters.add(0,fastJsonHttpMessageConverter);
}