项目场景:
目前基本都是Java 8
及以上的项目
用我们领导的话(二十一世纪都过了20多年了,很多人还在用20年前java
出生时就开始使用的反射工具,如各种BeanUtils
及其变种进行对象拷贝,这是不应该的!)
因此学习了一下MapStruct
:MapStruct 是一个 Java 注释处理器,用于生成类型安全的 bean 映射类。
官网地址:
https://mapstruct.org/
相关步骤移步阿里巴巴:
告别BeanUtils,Mapstruct从入门到精通
压测数据对比:
12种 vo2dto 方法,就 BeanUtil.copyProperties 压测数据最拉跨!
问题描述
按上面步骤引入依赖,接口调用报错java.lang.ClassNotFoundException
原因分析:
还是依赖没有引对!!!(位置和方案不同)
当前mavan模块必须直接导入mapstruct的jar包坐标,不能通过依赖传递来引用。
解决方案:
方案一:maven编译插件没加
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<parameters>true</parameters>
<encoding>UTF-8</encoding>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.0.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
方案二:增加mapstruct-jdk8依赖
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.5.0.Final</version>
</dependency>
成功解决…