首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建ConversionServiceAdapter - MapStruct Spring扩展

如何创建ConversionServiceAdapter - MapStruct Spring扩展
EN

Stack Overflow用户
提问于 2020-12-10 05:24:39
回答 1查看 543关注 0票数 1

我正在尝试使用MapStruct Spring扩展的内部版本0.0.1。我无法获取如何创建ConversionServiceAdapter类?在official website上提到了

代码语言:javascript
复制
annotations and extensions defined in this project will generate a class acting as bridge between MapStruct’s conventions and Spring’s ConversionService API

他们正在谈论的班级是什么?是ConversionServiceAdapter吗?以下是我的类

代码语言:javascript
复制
@Getter
@Setter
@FieldNameConstants
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Car {

  private String name;
  private String model;
  private LocalDate year;

  Company company;
}
代码语言:javascript
复制
@Getter
@Setter
@FieldNameConstants
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Company {

  private String companyName;

  private Address address;
}

假设CarDto和CompanyDto结构相同。

代码语言:javascript
复制
@Mapper(config = MapperSpringConfig.class)
public interface CarMapper extends Converter<Car, CarDto> {

  CarDto convert(Car car); 
}
代码语言:javascript
复制
@MapperConfig(componentModel = "spring", uses = ConversionServiceAdapter.class)
public interface MapperSpringConfig {

}

现在,我应该像这样自己创建一个ConversionServiceAdapter类,还是必须由Mapstruct spring扩展以某种方式生成它。如果它是由扩展创建的,我应该把uses = ConversionServiceAdapter.class放在上面的@MapperConfig中吗?它怎麽工作?

代码语言:javascript
复制
@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上的示例,但它们是不够的,并且没有清楚地说明如何使用它。

请向我询问您需要的任何细节。

EN

回答 1

Stack Overflow用户

发布于 2020-12-10 15:00:02

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

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

在不对扩展项目本身进行任何特殊配置的情况下,将使用以下名称生成适配器类:org.mapstruct.extensions.spring.converter.ConversionServiceAdapter

如果你想改变这一点,可以添加一个@SpringMapperConfig注解--参见this example

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65225133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档