我正在尝试使用MapStruct Spring扩展的内部版本0.0.1。我无法获取如何创建ConversionServiceAdapter类?在official website上提到了
annotations and extensions defined in this project will generate a class acting as bridge between MapStruct’s conventions and Spring’s ConversionService API他们正在谈论的班级是什么?是ConversionServiceAdapter吗?以下是我的类
@Getter
@Setter
@FieldNameConstants
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Car {
private String name;
private String model;
private LocalDate year;
Company company;
}@Getter
@Setter
@FieldNameConstants
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Company {
private String companyName;
private Address address;
}假设CarDto和CompanyDto结构相同。
@Mapper(config = MapperSpringConfig.class)
public interface CarMapper extends Converter<Car, CarDto> {
CarDto convert(Car car);
}@MapperConfig(componentModel = "spring", uses = ConversionServiceAdapter.class)
public interface MapperSpringConfig {
}现在,我应该像这样自己创建一个ConversionServiceAdapter类,还是必须由Mapstruct spring扩展以某种方式生成它。如果它是由扩展创建的,我应该把uses = ConversionServiceAdapter.class放在上面的@MapperConfig中吗?它怎麽工作?
@Component
public class ConversionServiceAdapter {
@Autowired
private ConversionService conversionService;
public CarDto mapCarToCarDto(final Car source) {
return conversionService.convert(source, CarDto.class);
}
public CompanyDto mapCompanyToCompanyDto(final Company source) {
return conversionService.convert(source, CompanyDto.class);
}
}我在网站上找不到任何文档或发行说明。有一个链接指向github上的示例,但它们是不够的,并且没有清楚地说明如何使用它。
请向我询问您需要的任何细节。
发布于 2020-12-10 15:00:02
首先:感谢您使用这个小项目。:-)
关于您的问题:是的,这正是Spring extensions项目目前所做的:它生成适配器类。因此,在MapperSpringConfig的uses属性中,您可以指向生成的类。(顺便说一句,您不必创建单独的Config类,您也可以依赖于单个映射器的uses。这只是为了说明目的。)
在不对扩展项目本身进行任何特殊配置的情况下,将使用以下名称生成适配器类:org.mapstruct.extensions.spring.converter.ConversionServiceAdapter。
如果你想改变这一点,可以添加一个@SpringMapperConfig注解--参见this example。
现在,作为项目的维护者,请允许我为不清楚的用法道歉。我仍然在文档中,但这实际上是我分配了0.0.1版本号的主要原因。这些扩展按照它应该的方式工作。如果您遇到任何问题,请随时通过常用渠道与我们联系。
https://stackoverflow.com/questions/65225133
复制相似问题