Solon

dromara::mapstruct-plus-solon-plugin

</> markdown

此插件,由社区成员(脑袋困掉了)贡献,详情见:代码仓库。版本已纳入 solon-parent 管理

<dependency>
    <groupId>org.dromara.solon-plugins</groupId>
    <artifactId>mapstruct-plus-solon-plugin</artifactId>
</dependency>

1、描述

该插件提供了 MapStructPlus 的 Solon 实现

2、使用说明

添加依赖后,还需要添加 "maven-compiler-plugin" 的配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <annotationProcessorPaths>
                    <path>
                      <groupId>org.projectlombok</groupId>
                      <artifactId>lombok</artifactId>
                      <version>${lombok.version}</version>
                    </path>
                    <path>
                        <groupId>io.github.linpeilie</groupId>
                        <artifactId>mapstruct-plus-processor</artifactId>
                        <version>${mapstruct-plus.version}</version>
                    </path>
                </annotationProcessorPaths>
                <compilerArgs>
                    <arg>
                        -Amapstruct.defaultComponentModel=solon
                    </arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

3、简单应用

@Component
public class Demo {
    @Inject
    private Converter converter;

    public void test() {
        User user = new User();
        user.setUsername("jack");
        user.setAge(23);
        user.setYoung(false);

        UserDto userDto = converter.convert(user, UserDto.class);
        System.out.println(userDto);    // UserDto{username='jack', age=23, young=false}

        assert user.getUsername().equals(userDto.getUsername());
        assert user.getAge() == userDto.getAge();
        assert user.isYoung() == userDto.isYoung();

        User newUser = converter.convert(userDto, User.class);

        System.out.println(newUser);    // User{username='jack', age=23, young=false}

        assert user.getUsername().equals(newUser.getUsername());
        assert user.getAge() == newUser.getAge();
        assert user.isYoung() == newUser.isYoung();
    }

}

更多内容可以参照: 快速开始 | MapStructPlus

基本使用等同于 SpringBoot 方式,区别有两点:

  • 获取 Converter 实例时,需要用 @Inject 注解。
  • 在 maven-compiler-plugin 中,需要增加 compilerArgs:-Amapstruct.defaultComponentModel=solon