From 052dec37c52d1597eba004038995ce541148a368 Mon Sep 17 00:00:00 2001 From: ZhengJin Date: Sun, 25 May 2025 18:09:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(MapperConfig):=20=E6=B7=BB=E5=8A=A0=20uses?= =?UTF-8?q?=20=E5=B1=9E=E6=80=A7=E4=BB=A5=E9=85=8D=E7=BD=AE=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E5=85=B1=E4=BA=AB=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/AutoMapperProcessor.java | 3 +++ .../processor/AutoMapperProperties.java | 17 +++++++++++++---- .../generator/MapperConfigGenerator.java | 5 +++++ .../linpeilie/annotations/MapperConfig.java | 5 +++++ pom.xml | 2 +- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java index 754ff13..97d52fd 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java @@ -367,6 +367,9 @@ public class AutoMapperProcessor extends AbstractProcessor { if (mapperConfigGem == null || !mapperConfigGem.isValid()) { return; } + if (mapperConfigGem.uses().hasValue()) { + AutoMapperProperties.setUses(mapperConfigGem.uses().get()); + } if (mapperConfigGem.mapperPackage().hasValue()) { AutoMapperProperties.setMapperPackage(mapperConfigGem.mapperPackage().get()); } diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProperties.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProperties.java index d85b23d..6631d1e 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProperties.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProperties.java @@ -1,14 +1,15 @@ package io.github.linpeilie.processor; import com.squareup.javapoet.ClassName; -import io.github.linpeilie.processor.utils.FileUtils; import io.github.linpeilie.processor.utils.IncrementMarkUtils; -import org.mapstruct.NullValueMappingStrategy; -import org.mapstruct.NullValuePropertyMappingStrategy; -import org.mapstruct.ReportingPolicy; + +import javax.lang.model.type.TypeMirror; +import java.util.List; public class AutoMapperProperties { + private static List uses; + private static String mapperPackage; private static String componentModel = ContextConstants.ComponentModelConfig.defaultComponentModel; @@ -84,6 +85,14 @@ public class AutoMapperProperties { /* ******************** getter/setter ******************** */ + public static List getUses() { + return uses; + } + + public static void setUses(List uses) { + AutoMapperProperties.uses = uses; + } + public static String getMapperPackage() { return mapperPackage; } diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/MapperConfigGenerator.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/MapperConfigGenerator.java index d21de3a..4246e38 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/MapperConfigGenerator.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/MapperConfigGenerator.java @@ -48,6 +48,11 @@ public class MapperConfigGenerator { usesCodeBuilder.add(", $T.class", use); }); } + if (CollectionUtils.isNotEmpty(AutoMapperProperties.getUses())) { + AutoMapperProperties.getUses().forEach(use -> { + usesCodeBuilder.add(", $T.class", use); + }); + } CodeBlock usesCodeBlock = usesCodeBuilder.add("}").build(); final AnnotationSpec.Builder builder = AnnotationSpec.builder(ClassName.get("org.mapstruct", "MapperConfig")) .addMember("componentModel", diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/MapperConfig.java b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/MapperConfig.java index 6ca7f07..4a678c3 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/MapperConfig.java +++ b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/MapperConfig.java @@ -31,6 +31,11 @@ import static org.mapstruct.NullValueCheckStrategy.ON_IMPLICIT_CONVERSION; @Retention(RetentionPolicy.RUNTIME) public @interface MapperConfig { + /** + * 设置公共的转换器或其它 Mapper 类,在这里主要用途是设置全局共享的自定义转换类,不用再单个注解上重复设置 {@link org.mapstruct.MapperConfig#uses()} + */ + Class[] uses() default {}; + /** * 所生成的 Mapper 接口的包 * @return Mapper 接口自动生成后的包名,如果为空,则默认生成在要转换的类同包下 diff --git a/pom.xml b/pom.xml index f8b9a75..6f70c27 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ - 1.4.6 + 1.4.8 8 8 UTF-8