【发布时间】:2019-05-17 03:09:57
【问题描述】:
在 mapstruct 1.3.0.Final 中,我们通过构造函数进行依赖注入。文档说:
生成的映射器将注入 uses 中定义的所有类 属性
(...)
对于抽象类或装饰器,setter 注入应该是 用过。
我有以下例子:
@Mapper
public abstract class VehicleMapper {
@Autowired
private CarMapper carMapper;
@Autowired
private BikeMapper bikeMapper;
@Override
public VehicleDTO toDto(final Vehicle source) {
if (source instanceof Car) {
return carMapper.toDto((Car) source);
} else if (source instanceof Bike) {
return bikeMapper.toDto((Bike) source);
} else {
throw new IllegalArgumentException();
}
}
(...)
所以在我的例子中它应该看起来像这样(componentModel 在 maven 中定义):
@Mapper
public abstract class VehicleMapper {
private CarMapper carMapper;
private BikeMapper bikeMapper;
@Autowired
public void setCarMapper(final CarMapper carMapper) {
this.carMapper = carMapper;
}
@Autowired
public void setBikeMapper(final BikeMapper bikeMapper) {
this.bikeMapper = bikeMapper;
}
@Override
public VehicleDTO toDto(final Vehicle source) {
if (source instanceof Car) {
return carMapper.toDto((Car) source);
} else if (source instanceof Bike) {
return bikeMapper.toDto((Bike) source);
} else {
throw new IllegalArgumentException();
}
}
(...)
问题:
所以不可能通过构造函数注入carMapper和bikeMapper? injectionStrategy = CONSTRUCTOR 是否仅适用于 @Mapper(uses = {}) 中声明的类?
【问题讨论】:
标签: mapstruct