У меня ниже класса mapper, в котором я хочу использовать CounterService
. Я пытаюсь внедрить конструктор, но это не работает, и null
печатает.
@Mapper(componentModel = "spring", uses = CounterService.class, injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public abstract class CarMapper {
private CounterService counterService;
public CarMapper(CounterService counterService) {
this.counterService = counterService;
}
public abstract Car dtoToEntity(CarDto carDto);
public CarDto entityToDto(Car car) {
System.out.println(counterService)
//....
return carDto;
}
}
Класс реализации mapStruct
@Component
public class CarMapperImpl extends CarMapper{
@Override
public Car dtoToEntity(CarDto carDto){
//...
}
}
Если я использую инъекцию поля, используя @AutoWired
,таким образом, он работает нормально. Это означает, что Spring не поддерживает внедрение в конструкцию класса abstract
. Это потому, что abstract
класс не может быть создан непосредственно и требует создания подкласса для создания экземпляра?
Есть ли способ mapStruct
создать конструктор внутри класса реализации как:
public CarMapperImpl(CounterService counterService){
super(counterService);
}
Кстати, конструктор инъекций должен работать.