小编Ray*_*Ray的帖子

MapStruct Mapper作为Spring Framework Converter-可以惯用吗?

我想将MapStruct映射器与Spring的Conversion模型结合起来。因此,我将每个Mapper接口声明为Spring的扩展Converter

@Mapper
public interface CarMapper extends Converter<Car, CarDto> {    
    @Override
    CarDto convert(Car car);    
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以通过注入standard来使用mapper bean ConversionService

class CarWarehouse {
    @Autowired
    private ConversionService conversionService;

    ...

    public CarDto getCarInformation(Car car) {
        return conversionService.convert(car, CarDto.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但是我想知道是否有一种方法可以避免通过uses属性直接将一些Mappers注入到其他对象中。我想要做的是告诉映射到useConversionService雇用其他制图。但是,由于ConversionServiceconvert方法与MapStruct的映射方法的标准模式不匹配,因此代码生成插件无法识别在寻找子映射时可以使用该服务。基本上,我想写的是

@Mapper(uses=ConversionService.class)
public interface ParentMapper extends Converter<Parent, ParentDto>
Run Code Online (Sandbox Code Playgroud)

代替

@Mapper(uses={ChildMapper1.class, ChildMapper2.class, ChildMapper3.class})
public interface ParentMapper extends Converter<Parent, ParentDto>
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

编辑

既然有人问过了,可以说我有一个CarMapper上面的定义,它的类型CarCarDto …

java spring mapstruct

9
推荐指数
1
解决办法
281
查看次数

标签 统计

java ×1

mapstruct ×1

spring ×1