java开发工具(8)你还在手动写代码修改出参格式么?快用注解方式吧


在你的代码中,你一定修改过出参格式把,例如把Date格式转换成年月日时分秒返回给前端,例如,因为Long型在前端有精度缺失的问题,把Long型转换为String类型返回给前端。如果你用代码手动去转,例如这样

DateUtils.format(new Date(),"YYYY-MM-DD");

再把值设置进去,挺耗费时间的,如果只是一行注解解决问题,是不是简单很多呢,如下所示:

    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;

这就是我们要讲的fastJson与Springboot的融合。

一、怎么引入fastJson的转换

你只需要加一段如下代码,便可引入fastJson

@Configuration
public class WebConfig implements WebMvcConfigurer {
    /**
25
     * 使用fastjson代替jackson
26
     * @param converters
27
     */
28
    @Override
29
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
42
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
43
44
        //自定义fastjson配置
45
        FastJsonConfig config = new FastJsonConfig();
46
        config.setSerializerFeatures(
                SerializerFeature.WriteDateUseDateFormat,
                SerializerFeature.DisableCircularReferenceDetect 
53
        );
54
        fastJsonHttpMessageConverter.setFastJsonConfig(config);
        converters.add(fastJsonHttpMessageConverter);
    }
64
}

二、怎么使用

在引入了fastJson的全局配置后,如何使用呢?方式如下:

        @JSONField(format = "yyyy年MM月dd日")
        private Date birthDay;

此时你的日期格式出来就是format的格式了。

三、转换的原理是什么

转换的原理要结合源码去讲解,在我的另一篇博文java开发工具(9)fastJson注解是如何映射成指定出参格式的(源码解析)中有具体说明。

四、总结

关于类型的转换,我们能用注解是比用代码转换要好的,出现问题的可能性也小很多,最关键的是可以提升效率。但是有一些注意点,我在此说明下

  • 注解的返回样式一定要统一,在fastJson中有一个配置数字类型转换String,如果为null会返回“0”,这个要去掉:
                SerializerFeature.WriteNullNumberAsZero,
  • @DateTimeFormat注解既可以转换入参也可以转换出参,转换出参的时候,如果用的是SpringBoot2以上的没有问题,如果SpringBoot版本较低,你只转换年月日,还会返回时分秒,此处要注意。
发布了188 篇原创文章 · 获赞 117 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/lz710117239/article/details/105399410