带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(1)

简介: 带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(1)

MapStruct,降低无用代码的神器

image.pngimage.png作者:王子林(寥天) 出品:大淘宝技术

 

 

在学习《告别BeanUtils,Mapstruct从入门到精通》后,我发觉MapStruct确实是一个提升系统性能,降低无用 代码的神器。然而,在实践这篇文章过程中,我遇到了些问题,并由此对MapStruct框架有了更深入的理解,以下将我的学习收获分享给大家。

 

本文与《告别BeanUtils,Mapstruct入门到精通》的主要不同之处主要在于: 增加了不同环境下Maven引入的注意事项(见“引入”章)

增加了一对多字段(例如Json字段)互转的代码(见“高级转换”第一节) 增加了子类字段互转的代码(见“高级转换”第二节)

增加了利用Spring进行依赖注入的代码(见“高级转换”第三节)

 

MapStruct是什么?

 

MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach.——https://mapstruct.org/

 

从官方定义来看,MapStruct类似于我们熟悉的BeanUtils, 是一个Bean的转换框架。

 

In contrast to other mapping frameworks MapStruct generates bean mappings at compile-time which ensures a high performance, allows for fast developer feedback and thorough error checking.—— https://mapstruct.org/

 

他与BeanUtils最大的不同之处在于,其并不是在程序运行过程中通过反射进行字段复制的,而是在编译期生成用于字段复制的代码(类似于Lombok生成get()和set()方法),这种特性使得该框架在运行时相比于BeanUtils有很大的性能提升。

 

引入

Maven

由于MapStruct和Lombok都会在编译期生成代码,如果配置不当,则会产生冲突,因此在工程中同时使用这两个  包时,应该按照以下方案导入:

 

image.png当POM中不包含Lombok时

 

<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.2.Final</version>
</dependency>


带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(2)https://developer.aliyun.com/article/1339762?groupCode=taobaotech

相关文章
|
9月前
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(4)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(4)
|
9月前
|
安全
带你读《2022技术人的百宝黑皮书》——如何避免写重复代码:善用抽象和组合(4)
带你读《2022技术人的百宝黑皮书》——如何避免写重复代码:善用抽象和组合(4)
|
9月前
带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(8)
带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(8)
带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(8)
|
9月前
|
算法
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(3)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(3)
|
9月前
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(6)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(6)
|
9月前
|
网络协议
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
|
9月前
|
SQL 缓存 JSON
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)
119 1
|
9月前
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(5)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(5)
|
9月前
|
安全
带你读《2022技术人的百宝黑皮书》——如何避免写重复代码:善用抽象和组合(2)
带你读《2022技术人的百宝黑皮书》——如何避免写重复代码:善用抽象和组合(2)
带你读《2022技术人的百宝黑皮书》——如何避免写重复代码:善用抽象和组合(2)
|
9月前
|
算法 Java Maven
带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(10)
带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(10)