MapStruct通过一些接口定义,能自动生成实现类,将一个类转换为另一个类。
引用
1.3.1.Final
...
org.mapstruct
mapstruct
${org.mapstruct.version}
...
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.8
1.8
org.mapstruct
mapstruct-processor
${org.mapstruct.version}
这个依赖有两个问题
不支持lombok的@Data等注解
如果接口引用的类通过@Data标记,由于标记生成getter/setter等方法,但是在生成mapstruct mapper类时看不到,会导致编译找不到属性的问题。
解决方法:引入mapstruct-processor,同时去掉plugin中的annotationProcessorPaths:
...
org.mapstruct
mapstruct-processor
1.3.1.Final
provided
...
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
...
Spring中无法通过@Autowired注入接口
这是因为生成的Mapper实现类,没有被标注@Component,通