【问题标题】:Mapstruct stereotype for MapperMapper 的 Mapstruct 原型
【发布时间】:2017-03-12 17:02:58
【问题描述】:

我正在使用 Spring,并且我从项目中的 mapstruct 库开始,所以我想为 @Mapper(componentModel = "spring") 创建原型注释,例如 @SpringMapper。但它不会生成任何映射器。

这是不可能的还是我做错了什么?

【问题讨论】:

    标签: java spring mapper mapstruct stereotype


    【解决方案1】:

    这是一个非常有趣的想法,但目前不支持。 MapStruct 注释处理器仅查找 @Mapper 注释,即它将被调用以用于 @SpringMapper 的定义,但不会用于任何带有 @SpringMapper 注释的 bean。

    话虽如此,MapStruct 通过config classes 提供了自己的重用配置方法:

    @MapperConfig(componentModel="spring")
    public interface SpringMappers {}
    

    将组件模型等所有常用选项放入此类配置类,然后从各个映射器中引用它:

    @Mapper(config=SpringMappers.class)
    public interface MyMapper {
        //...
    }
    

    【讨论】:

      【解决方案2】:

      感谢您的回答Gunnar

      maven 的另一种可能的解决方案是: 以下 maven 插件将设置默认(项目范围)componentModel=spring 和 unmappedTargetPolicy=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>
      

      【讨论】:

        猜你喜欢
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-27
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 2019-12-04
        相关资源
        最近更新 更多