Java Mapper的Mapstruct原型
我使用的是Spring,我从项目中的mapstruct库开始,所以我有了一个想法,为@Mapper(componentModel=“Spring”)创建原型注释,比如@SpringMapper。但它不会生成任何映射器Java Mapper的Mapstruct原型,java,spring,mapper,mapstruct,stereotype,Java,Spring,Mapper,Mapstruct,Stereotype,我使用的是Spring,我从项目中的mapstruct库开始,所以我有了一个想法,为@Mapper(componentModel=“Spring”)创建原型注释,比如@SpringMapper。但它不会生成任何映射器 这是不可能的,还是我做错了什么?这是一个非常有趣的想法,但目前不受支持。MapStruct注释处理器仅查找@Mapper注释,即它将被调用用于@SpringMapper的定义,但不用于使用@SpringMapper注释的任何bean 也就是说,MapStruct通过以下方式提供了自
这是不可能的,还是我做错了什么?这是一个非常有趣的想法,但目前不受支持。MapStruct注释处理器仅查找
@Mapper
注释,即它将被调用用于@SpringMapper
的定义,但不用于使用@SpringMapper
注释的任何bean
也就是说,MapStruct通过以下方式提供了自己的配置重用方法:
将所有常见选项(如组件模型)放入此类配置类,然后从各个映射器中引用它:
@Mapper(config=SpringMappers.class)
public interface MyMapper {
//...
}
谢谢你的回答
maven的另一个可能解决方案是:
以下maven插件将设置默认(项目范围)componentModel=spring和UnappedTargetPolicy=ERROR
<properties>
<java.version>1.8</java.version>
<org.mapstruct.version>1.1.0.Final</org.mapstruct.version>
</properties>
<dependencies>
<dependency>
groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<debug>true</debug>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<defaultOutputDirectory>
${project.build.directory}/generated-sources
</defaultOutputDirectory>
<processors>
<processor>org.mapstruct.ap.MappingProcessor</processor>
</processors>
<options>
<mapstruct.defaultComponentModel>spring</mapstruct.defaultComponentModel>
<mapstruct.unmappedTargetPolicy>ERROR</mapstruct.unmappedTargetPolicy>
</options>
</configuration>
<executions>
<execution>
<id>process</id>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
1.8
1.1.0.1最终版本
groupId>org.mapstruct
mapstruct-jdk8
${org.mapstruct.version}
org.apache.maven.plugins
maven编译器插件
3.5.1
${java.version}
${java.version}
UTF-8
符合事实的
符合事实的
符合事实的
org.bsc.maven
maven处理器插件
3.2.0
${project.build.directory}/生成的源
org.mapstruct.ap.MappingProcessor
春天
错误
过程
生成源
过程
org.mapstruct
mapstruct处理器
${org.mapstruct.version}
<properties>
<java.version>1.8</java.version>
<org.mapstruct.version>1.1.0.Final</org.mapstruct.version>
</properties>
<dependencies>
<dependency>
groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<debug>true</debug>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<defaultOutputDirectory>
${project.build.directory}/generated-sources
</defaultOutputDirectory>
<processors>
<processor>org.mapstruct.ap.MappingProcessor</processor>
</processors>
<options>
<mapstruct.defaultComponentModel>spring</mapstruct.defaultComponentModel>
<mapstruct.unmappedTargetPolicy>ERROR</mapstruct.unmappedTargetPolicy>
</options>
</configuration>
<executions>
<execution>
<id>process</id>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>