我想将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注入到其他对象中。我想要做的是告诉映射到use了ConversionService雇用其他制图。但是,由于ConversionService的convert方法与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上面的定义,它的类型Car和CarDto …