diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarCreate.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarCreate.java new file mode 100644 index 0000000..80f8661 --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarCreate.java @@ -0,0 +1,15 @@ +package io.github.linpeilie.me.annotation; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +@Data +@CreateMapper +@AutoMapper(target = CarDTO.class) +public class CarCreate { + + private String name; + + private String operatorUserId; + +} diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarDTO.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarDTO.java new file mode 100644 index 0000000..c990cfe --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarDTO.java @@ -0,0 +1,14 @@ +package io.github.linpeilie.me.annotation; + +import lombok.Data; + +@Data +public class CarDTO { + + private String name; + + private String createBy; + + private String updateBy; + +} diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarUpdate.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarUpdate.java new file mode 100644 index 0000000..47e65a8 --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CarUpdate.java @@ -0,0 +1,15 @@ +package io.github.linpeilie.me.annotation; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +@Data +@UpdateMapper +@AutoMapper(target = CarDTO.class) +public class CarUpdate { + + private String name; + + private String operatorUserId; + +} diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CreateMapper.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CreateMapper.java new file mode 100644 index 0000000..90d04fc --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/CreateMapper.java @@ -0,0 +1,7 @@ +package io.github.linpeilie.me.annotation; + +import io.github.linpeilie.annotations.AutoMapping; + +@AutoMapping(source = "operatorUserId", target = "createBy") +public @interface CreateMapper { +} diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/UpdateMapper.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/UpdateMapper.java new file mode 100644 index 0000000..b5e3a5c --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/me/annotation/UpdateMapper.java @@ -0,0 +1,8 @@ +package io.github.linpeilie.me.annotation; + +import io.github.linpeilie.annotations.AutoMapping; + +@AutoMapping(source = "operatorUserId", target = "updateBy") +public @interface UpdateMapper { + +} diff --git a/example/spring-boot-with-lombok/src/test/java/io/github/linpeilie/AutoMappingAnnotationTest.java b/example/spring-boot-with-lombok/src/test/java/io/github/linpeilie/AutoMappingAnnotationTest.java new file mode 100644 index 0000000..f72ef51 --- /dev/null +++ b/example/spring-boot-with-lombok/src/test/java/io/github/linpeilie/AutoMappingAnnotationTest.java @@ -0,0 +1,53 @@ +package io.github.linpeilie; + +import io.github.linpeilie.me.annotation.CarCreate; +import io.github.linpeilie.me.annotation.CarDTO; +import io.github.linpeilie.me.annotation.CarUpdate; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.util.Assert; + +@Slf4j +@SpringBootTest(classes = Application.class) +public class AutoMappingAnnotationTest { + + @Autowired + private Converter converter; + + @Test + public void test() { + CarCreate carCreate = new CarCreate(); + carCreate.setName("create car"); + carCreate.setOperatorUserId("create user id...."); + + CarDTO car1 = converter.convert(carCreate, CarDTO.class); + log.info("create user : {}", car1); + Assert.isTrue(car1.getName().equals("create car"), "create user name is empty"); + Assert.isTrue(car1.getCreateBy().equals("create user id...."), "create user id is empty"); + + CarCreate carCreate1 = converter.convert(car1, CarCreate.class); + Assert.isTrue(carCreate1.getName().equals("create car"), "create user name is empty"); + Assert.isTrue(carCreate1.getOperatorUserId().equals("create user id...."), "create user id is empty"); + + + CarUpdate carUpdate = new CarUpdate(); + carUpdate.setName("update car"); + carUpdate.setOperatorUserId("update user id...."); + + CarDTO car2 = converter.convert(carUpdate, CarDTO.class); + log.info("update user : {}", car2); + Assert.isTrue(car2.getName().equals("update car"), "update user name is empty"); + Assert.isTrue(car2.getUpdateBy().equals("update user id...."), "update user id is empty"); + + CarUpdate updateCar1 = converter.convert(car2, CarUpdate.class); + Assert.isTrue(updateCar1.getName().equals("update car"), "update user name is empty"); + Assert.isTrue(updateCar1.getOperatorUserId().equals("update user id...."), "update user id is empty"); + + + + } + + +} diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/enhance/processor/SpringComponentProcessor.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/enhance/processor/SpringComponentProcessor.java index 8d74245..dd385e7 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/enhance/processor/SpringComponentProcessor.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/enhance/processor/SpringComponentProcessor.java @@ -43,6 +43,6 @@ public class SpringComponentProcessor extends AnnotationBasedComponentModelProce InjectionStrategyGem injectionStrategy) { return new SpringDelayInjectMapperReference(originalReference.getType(), originalReference.getVariableName(), originalReference.isUsed(), - getTypeFactory().getType("io.github.linpeilie.mapstruct.SpringContextUtils")); + getTypeFactory().getType("io.github.linpeilie.mapstruct.SpringContextUtils4Msp")); } } diff --git a/mapstruct-plus-processor/src/main/resources/io/github/linpeilie/processor/enhance/model/SpringDelayInjectMapperReference.ftl b/mapstruct-plus-processor/src/main/resources/io/github/linpeilie/processor/enhance/model/SpringDelayInjectMapperReference.ftl index f84aa7d..6ad6e1b 100644 --- a/mapstruct-plus-processor/src/main/resources/io/github/linpeilie/processor/enhance/model/SpringDelayInjectMapperReference.ftl +++ b/mapstruct-plus-processor/src/main/resources/io/github/linpeilie/processor/enhance/model/SpringDelayInjectMapperReference.ftl @@ -1,2 +1,2 @@ <#-- @ftlvariable name="" type="io.github.linpeilie.processor.enhance.model.SpringDelayInjectMapperReference" --> -private <@includeModel object=type/> ${variableName} = SpringContextUtils.getBean("${variableName}", <@includeModel object=type/>.class); \ No newline at end of file +private <@includeModel object=type/> ${variableName} = SpringContextUtils4Msp.getBean("${variableName}", <@includeModel object=type/>.class); \ No newline at end of file diff --git a/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/MapstructAutoConfiguration.java b/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/MapstructAutoConfiguration.java index 47f1126..cc6bd01 100644 --- a/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/MapstructAutoConfiguration.java +++ b/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/MapstructAutoConfiguration.java @@ -25,8 +25,8 @@ public class MapstructAutoConfiguration { } @Bean - public static SpringContextUtils springContextUtils() { - return new SpringContextUtils(); + public static SpringContextUtils4Msp springContextUtils() { + return new SpringContextUtils4Msp(); } } diff --git a/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/SpringContextUtils.java b/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/SpringContextUtils4Msp.java similarity index 89% rename from mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/SpringContextUtils.java rename to mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/SpringContextUtils4Msp.java index bdb201a..a71f8d6 100644 --- a/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/SpringContextUtils.java +++ b/mapstruct-plus-spring-boot-starter/src/main/java/io/github/linpeilie/mapstruct/SpringContextUtils4Msp.java @@ -9,20 +9,20 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ConfigurableApplicationContext; -public class SpringContextUtils implements BeanFactoryPostProcessor, ApplicationContextAware { +public class SpringContextUtils4Msp implements BeanFactoryPostProcessor, ApplicationContextAware { private static ConfigurableListableBeanFactory beanFactory; private static ApplicationContext applicationContext; - public SpringContextUtils() { + public SpringContextUtils4Msp() { } public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtils.beanFactory = beanFactory; + SpringContextUtils4Msp.beanFactory = beanFactory; } public void setApplicationContext(ApplicationContext applicationContext) { - SpringContextUtils.applicationContext = applicationContext; + SpringContextUtils4Msp.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() {