如何创建conversionserviceadapter-mapstruct spring扩展

bzzcjhmw  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(617)

我正在尝试使用mapstructspring扩展的build0.0.1。我无法获取如何创建conversionserviceadapter类?官方网站上提到了这一点

annotations and extensions defined in this project will generate a class acting as bridge between MapStruct’s conventions and Spring’s ConversionService API

他们在谈论什么课?是转换服务适配器吗?以下是我的课程

@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上有一个到示例的链接,但是它们还不够,并且没有清楚地解释如何使用它。
请向我询问你需要的任何细节。

vq8itlhq

vq8itlhq1#

首先:感谢您使用这个小项目。:-)
关于您的问题:是的,这正是spring扩展项目目前所做的:它生成适配器类。所以在你的 MapperSpringConfiguses 属性,可以指向生成的类(顺便说一句,您不必创建一个单独的配置类,您也可以依赖于单个Map器的 uses . 这只是为了说明。)
如果扩展项目本身没有任何特殊配置,则将使用以下名称生成适配器类: org.mapstruct.extensions.spring.converter.ConversionServiceAdapter .
如果要更改此项,请添加 @SpringMapperConfig 注解-参见此示例。
现在,作为项目的维护者,请允许我为不清楚的用法道歉。我还在文档中,但这实际上是我分配版本号的主要原因 0.0.1 . 扩展按预期工作。如果您遇到任何问题,请随时联系我们的一个常用渠道。

相关问题