Java 如何创建ConversionServiceAdapter-MapStruct Spring扩展

Java 如何创建ConversionServiceAdapter-MapStruct Spring扩展,java,spring,spring-boot,mapstruct,Java,Spring,Spring Boot,Mapstruct,我正在尝试使用MapStruct Spring扩展的版本0.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 他们在谈论什么课程?是转换

我正在尝试使用MapStruct Spring扩展的版本0.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;
}
假设CarDto和CompanyTo结构相同

@Mapper(config = MapperSpringConfig.class)
public interface CarMapper extends Converter<Car, CarDto> {

  CarDto convert(Car car); 
}
现在我应该像这样自己创建一个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);
  }
}

我在网站上找不到任何文档或发行说明。上的示例有一个链接,但它们还不够,并且没有清楚地解释如何使用它


请向我询问您需要的任何详细信息。

首先:感谢您使用这个小型项目。:-)

关于您的问题:是的,这正是SpringExtensions项目目前所做的:它生成适配器类。因此,在
mapperpringconfig
uses
属性中,可以指向生成的类。(顺便说一句,您不必创建单独的配置类,您也可以依赖于单个映射器的
使用
。这只是为了说明。)

如果扩展项目本身没有任何特殊配置,适配器类将使用以下名称生成:
org.mapstruct.extensions.spring.converter.ConversionServiceAdapter

如果要更改此设置,请添加
@SpringMapperConfig
注释-请参阅


现在,作为项目的维护者,请允许我为不清楚的用法道歉。我还在看文档,但这实际上是我分配
0.0.1
版本号的主要原因。扩展按预期的方式工作。如果您遇到任何问题,请随时通过常用渠道与我们联系。

感谢您的快速回复;问题是AdapterClass没有生成。您需要MapStruct处理器本身和作为注释处理器依赖项的扩展项目。如何实现这一点取决于您的特定配置(Maven/Gradle);但本质上,无论您当前在哪里添加处理器,都必须以相同的方式添加扩展。我们是否还需要将注释处理器添加到maven编译器插件部分?我也试过了,有没有试过。将@SpringMapperConfig添加到MapperSpringConfig中,并指定了包和类名,但即使这样,适配器类也没有创建。我在根据文档使其工作时也遇到了问题。最后,我丢失了一个@ComponentScan(“org.mapstruct.extensions.spring”)。也许Maven中完整、具体和离散的示例也会有所帮助,因为这些示例都是渐变的,并且使用相对的项目注释处理器指令,这与第三方Maven用户处理事情的方式不太相似。我们在最新的master中添加了一些文档。请随意添加您认为缺少的内容并打开PR。
@MapperConfig(componentModel = "spring", uses = ConversionServiceAdapter.class)
public interface MapperSpringConfig {

}
@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);
  }
}