在一个项目的不同模块或不同需求中,经常需要一个数据模型的一部分,需要进行对象与对象之间的互相转换。
最为简单直接的就是使用getter
,setter
方法进行转换,或者使用自定义Beans.copyProperties
等实现。
前者编写麻烦,后者使用反射的方式导致性能消耗较大
MapStruct是一个属性映射工具、框架。通过生成这些繁琐的代码来节省时间。
- GitHub: mapstruct/mapstruct
依赖
以SpringBoot+Lombok+MapStruct为例,其余场景见 GitHub示例代码
...
<properties>
<org.mapstruct.version>1.5.2.Final</org.mapstruct.version>
<org.projectlombok.version>1.18.20</org.projectlombok.version>
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
<!-- lombok dependencies should not end up on classpath -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId