1,long类型长度过长时,传回前端会失真,尝试用注解@format等注解进行操作,均没有效果
原因:使用注解有前提,如被转换类型需要是包装类Long,项目中不能引用Gson,所以多种注解均失败,最后采用全局配置
WebDataConvertConfig implements WebMvcConfigurer
解决返回值失真问题
2,接上述问题,第二天启动时发现,swaggerUi无法打开
重新启动程序后,由于webmvc配置被重写,导致自动注入失效,swagger找不到前端资源,页面报错,要解决这个问题,需要继续指定在config类中指定资源位置,稍微麻烦,故选择了另一种方法配置,验证生效
@Configuration public class LongToStringConfig { @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder .serializerByType(Long.class, ToStringSerializer.instance) .serializerByType(Long.TYPE, ToStringSerializer.instance); } }
3,最后,发现这个问题根本不是问题,正常调用数据并无异常,只是swagger作为切面切入程序,中间做了一些处理,只是在swagger上出现了这个问题,修复方便前端查看
4,开发过程中,与前端对接口,他发一个一模一样的接口给我,我给的模板能查到,他的查不到,根本看不出问题,一度怀疑是接口哪里出问题了,一看接口也不像有问题,然后开本地测试,两条接口走进去,其中一个参数空了,这才定位到是参数问题,在postman对比参数,看不出,复制到本地编辑器对比,才看出是l和I(根本看不出),也就是小写的L和大写的i