eladmin
eladmin copied to clipboard
关于JSON组件的问题
系统内目前有3套JSON组件
- SpringBoot自带的Jackson
- fastjson
- Hutool包含的
JSONUtil
目前我发现的问题有以下几点
- 目前系统内有部分序列化/反序列化使用的是Hutool,比如
SecurityUtils里的getCurrentUserId()和getCurrentUserDataScope(),这里没有什么问题,用什么都是可以的 -
LogServiceImpl的getParameter(Method method, Object[] args)方法,使用了Hutool的JSON组件,这里如果序列化的参数出现了循环引用,则没有办法去避免异常的产生。如果使用Jackson,则可以使用@JsonManagedReference和@JsonBackReference,或者使用@JsonIgnore来避免异常。如果使用fastjson,同样可以使用@JSONField(serialize = false)。 -
ConfigurerAdapter类里,配置了fastjson来格式化时间的converter,此处配置会导致其他默认的converter失效;比如,会导致无法使用ResponseEntity<?>来返回InputStreamResource来提供文件下载功能;所以目前文件下载都是用HttpServletResponse来实现的。此处我建议取消添加额外的converter,使用SpringBoot自带的jackson即可,关于时间的格式化完全可以交给前端来做。 -
@EnableWebMvc会导致产生一个独立的ObjectMapper,不受任何spring.jackson.*配置设置影响。