項目之中的實體對象超多,DTO、VO、DO等等,都需要涉及到屬性之間的映射。此項工作的邏輯性不是很復雜,但是非常的繁瑣,最好需要一個框架結構來做此件事情。根據java的特性,解決方案大概有兩種:
1、通過java自身的反射,反射確實方便,但是運行時執行,消耗性能。
2、框架自身最好能自動生成代碼,編譯執行,並且可以檢查到屬性名稱的變化帶來的編譯錯誤。
鑒於以上兩點,我們選擇了MapStruct,此框架具有以下的優點:
- 注解處理器
- 可以生成
JavaBean
之間那的映射代碼 - 類型安全, 高性能, 無依賴性
入門如下:
1、引入依賴
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
---注解分析器
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version> <!-- or newer version -->
<configuration>
<source>1.8</source> <!-- depending on your project -->
<target>1.8</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</path>
<!-- other annotation processors -->
</annotationProcessorPaths>
</configuration>
</plugin>
2、插件工具
mapstruct的插件可以自動檢查到屬性字段的更改,並且提供屬性靈活的選擇。(我下載了插件不好使)
idea通過插件市場下載即可。
