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