Структура карты: Рассмотрите возможность определения компонента типа ‘com.npdrums.cms.интерфейсы.DtoMapper » в вашей конфигурации

#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 интерфейсе, которые я предоставил. Пожалуйста, ты можешь попробовать?