小谈 FastConverter

本文介绍了FastConverter,一个用于RESTful API的项目中,用于数据转换的工具。通过BeanToMapConverterHandler,实现了注解驱动的数据转换逻辑,使业务代码与数据转换逻辑分离,提高代码的优雅性和可维护性。FastConverter支持多种类型的转换,并允许自定义转换器,关注点分离的设计理念贯穿其中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情

几个月前我为公司写一个用于实现RESTful API的项目基础框架,它是一个位于spring cloud项目中的open service内的基础框架,用来统一处理请求和返回。其中,为了实现数据的转换,我开发了一个小工具,叫做“FastConverter”。最初它被用来将数据实体转换为json string,在转换的过程中,使用注解的方式来定义数据转换逻辑。

后来在完成其他一些公司任务的过程中,我发现,这个FastConverter比我预期的还好用。它成功的将那些修饰数据形式的代码从业务逻辑代码中分离了出去。我不用在开发过程中去关心数据最后要呈现的样子,它们会被注解安全的修饰,并优雅的解决。

FastConvert好用的原因:BeanToMapConverterHandler

完整的FastConvert原理在我的另一篇博客《记一个小小的转换工具的开发:FastConverter》中。

public class CommonConverterFilter extends AbstractConverterFilter {
	[@Override](https://my.oschina.net/u/1162528)
	protected void initConverters(List<Converter<?, ?>> converters) {
		converters.add(new StringConverterHandler());
		converters.add(new NumberToStringConverterHandler());
		converters.add(new BooleanToStringConverterHandler());
		converters.add(new DateToTimeStampStringConve
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // 1、定义一个convert转换消息的对象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 2、添加fastjson的配置信息 FastJsonConfig fastJsonConfig = new FastJsonConfig(); SerializerFeature[] serializerFeatures = new SerializerFeature[] { // 美化json输出,否则会作为整行输出 // SerializerFeature.PrettyFormat, // 显示空字段 SerializerFeature.WriteMapNullValue, // 数值字段如果为null,则输出为0 // SerializerFeature.WriteNullNumberAsZero, // List字段如果为null,输出为[],而非null SerializerFeature.WriteNullListAsEmpty, // 字符类型字段如果为null,输出为"",而非null SerializerFeature.WriteNullStringAsEmpty, // Boolean字段如果为null,输出为false,而非null SerializerFeature.WriteNullBooleanAsFalse, // Date的日期转换器,时间格式yyyy-MM-dd HH: mm: ss SerializerFeature.WriteDateUseDateFormat, // 设置WriteEnumUsingToString SerializerFeature.WriteEnumUsingToString, // 禁用循环引用检测 SerializerFeature.DisableCircularReferenceDetect}; fastJsonConfig.setSerializerFeatures(serializerFeatures); fastJsonConfig.setCharset(StandardCharsets.UTF_8); // 3、在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); // 4、将convert添加到converters中 converters.add(0,fastConverter); }FastJsonHttpMessageConverter找不到 <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.57</version> </dependency>
最新发布
08-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值