Параметр 3 конструктора в обязательном компоненте типа «пакет», который не может быть найден - PullRequest
0 голосов
/ 16 января 2020

У меня есть метод вызова, определенный в интерфейсе NoteService, реализация этого метода в классе NoteImpl. Я пытаюсь получить доступ к этому методу из класса Refre sh, но я получаю эту ошибку

Parameter 3 of constructor in com.new.macro.rest.Refresh required a bean of type 'com.new.macro.unity.processorService' that could not be found.
Action:Consider defining a bean of type 'com.new.macro.unity.NoteService' in your configuration.

Мне нужна помощь в устранении этой ошибки.

Вот мой класс Refre sh откуда я пытаюсь получить доступ к методу call из NoteImpl class

package com.new.macro.rest;
@Component
public class Refresh implements BaseService {

    private final NoteService<Inbuild> iNoteService;

    public Refresh(final NoteService iNoteService) {
        this.iNoteService = iNoteService;
    }

    @PUT
    public String firstRefresh() {
        iNoteService.call(Types);
        return RefreshStatus.STARTED.toJsonResponse();
    }

Вот класс NoteImpl с call method functionality

@Configuration
public abstract class NoteImpl implements NoteService{

    private static final Logger LOGGER = LogManager.getLogger(NoteImpl.class);

    private final RestTemplate restTemplate;
    private final String Url;


    public NoteImpl( RestTemplate restTemplate,@Value("${url}") String Url){
        this.restTemplate = restTemplate;
        this.Url = Url;
    }

    public void call(Set<Inbuild> Types, String Url) {

        Set<String> results = new HashSet<>();
        \\ Remaining functionality
    }
}

Вот интерфейс

package com.new.macro.unity;


import java.util.Set;


public interface NoteService<T> {

    void call(Set<? extends T> Types);

}

Ответы [ 3 ]

0 голосов
/ 16 января 2020

Предполагается, что все эти классы сканируются по пути к классам: - NoteImpl не должно быть абстрактным - NoteImpl следует аннотировать как @Component вместо @Configuration. Классы конфигурации - это те, которые создают бины

0 голосов
/ 16 января 2020

Чтобы исправить это, не храните NoteImpl как абстрактный класс - экземпляры абстрактных классов не могут быть созданы. Это должно решить проблему. Хотя @Configuration будет работать (так как ее мета аннотирована @Component), здесь имеет смысл @Service.

Кроме того, вам не нужно @Autowired при внедрении конструктора - это необязательно. (Таким образом, другой ответ не решит проблему)

0 голосов
/ 16 января 2020

Добавить @Autowired аннотацию на голову конструктора:

@Autowired
public Refresh(final NoteService iNoteService) {
    this.iNoteService = iNoteService;
}

Тогда вы получите бин от NoteService.

...