#java #spring #spring-boot #maven #mapstruct
Вопрос:
Я получаю ошибку при запуске приложения: Рассмотрите возможность определения компонента типа ‘com.npdrums.cms.интерфейсы.DtoMapper » в вашей конфигурации
DtoMapper:
public interface DtoMapper<D, M> {
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void mapToEntity(D dto, @MappingTarget M entity);
}
Параграфдтомапп:
@Mapper(componentModel="spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ParagraphDtoMapper extends DtoMapper<ParagraphDtoMapper, Paragraph> {
}
Универсальный контроллер:
public abstract class GenericController<D extends GenericDto<D>, T extends GenericEntity<T>> {
private final GenericService<T> service;
private final DtoMapper<D, T> mapper;
public GenericController(GenericRepository<T> repository,
DtoMapper<D, T> mapper) {
this.service = new GenericService<>(repository) {};
this.mapper = mapper;
}
//...other methods
}
Параграфконтроллер:
@RestController
@RequestMapping("/paragraph")
@CrossOrigin("http://localhost:8080")
public class ParagraphController extends GenericController<ParagraphDto, Paragraph> {
public ParagraphController(ParagraphRepository repository,
DtoMapper<ParagraphDto, Paragraph> mapper) {
super(repository, mapper);
}
}
Я думаю, что проблема заключается в том, чтобы ввести картограф в универсальный контроллер. Я также делаю это в других реализациях конкретных контроллеров. Я попытался указать @ComponentScan
в основном классе, это не решило проблему.
Комментарии:
1. Я думаю, что проблема может быть вызвана тем, как вы определяете свой
ParagraphController
конструктор. Вы пробовали определить следующее?public ParagraphController(ParagraphRepository repository, ParagraphDtoMapper<ParagraphDto, Paragraph> mapper) { super(repository, mapper); }
. Обратите внимание на изменения вDtoMapper
интерфейсе, которые я предоставил. Пожалуйста, ты можешь попробовать?