这些年写Java写多了,感觉Java是越来越丑。尤其是在玩了TypeScript之后,看到Java代码总有一股想吐的感觉。这种思想的转变,从侧面上证明了,我并不是一个专一的人。
因为我是一条狗。
喜新厌旧,是我的本性,即使我把自己表现的很纯洁。
按理说,牛x的人物并不需要关注语言层面这种较低级的问题。但是,无论是什么语言,各种属性拷贝,是在工程上绕不开的问题。比如折腾人的VO、BO、DTO、DO等。
项目中的代码,有六成,是在做这些无用的转换和各种数据验证。这个比例是我瞎诌的,但也相差无几。
在Java中,有三种方式来处理这些属性拷贝:
1
直接硬编码,把代码硬怼上去
使用各种BeanUtils,通过反射完成赋值
使用类似MapStruct的工具,直接在编译期完成
其实嘛,哪一种都有利弊,有些东西虽然香,但实际用起来,还是要思量一下。个个打扮的花枝招展的,都是外在的皮囊。
本文主要介绍Mapstruct的使用,并从这香喷喷的工具中,闻一下其中变馊的味道。
1. 如何使用?
照例,需要在pom中加入依赖包,我们这里用的是1.4.1.Final版本。
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
这还没完,还需要在pom中的build部分,增加一个插件。搞这么复杂,是因为它的原理和lombok是一样的,同样通过APT在编译器实现的。