Поле в обязательном компоненте типа, который не может быть найден, рассмотрите определение компонента типа в вашей конфигурации - PullRequest
0 голосов
/ 01 июля 2019

При попытке запустить мое приложение я получаю следующую ошибку:

Поле edao в com.alon.service.EmployeeServiceImpl требуется bean-компонент введите 'com.alon.repository.EmployeeRepository', который не найден.

Точка впрыска имеет следующие аннотации:

  • @org.springframework.beans.factory.annotation.Autowired (обязательно = истина)

Действие:

Рассмотрим определение бина типа 'com.alon.repository.EmployeeRepository' в вашей конфигурации.

Структура проекта:

enter image description here

EmployeeRepository:

package com.alon.repository;

import com.alon.model.Employee;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface EmployeeRepository {
    List<Employee> findByDesignation(String designation);
    void saveAll(List<Employee> employees);
    Iterable<Employee> findAll();
}

EmployeeServiceImpl:

package com.alon.service;

import com.alon.model.Employee;
import com.alon.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class EmployeeServiceImpl implements EmployeeService {
    @Autowired
    private EmployeeRepository edao;

    @Override
    public void saveEmployee(List<Employee> employees) {
        edao.saveAll(employees);
    }

    @Override
    public Iterable<Employee> findAllEmployees() {
        return edao.findAll();
    }

    @Override
    public List<Employee> findByDesignation(String designation) {
        return edao.findByDesignation(designation);
    }
}

MyApplication:

package com.alon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplicataion {
    public static void main(String[] args) {
        SpringApplication.run(MyApplicataion.class, args);
    }
}

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Поскольку вы добавили тег весенней загрузки, я полагаю, вы используете sprig data jpa.Интерфейсы вашего репозитория должны расширять org.springframework.data.repository.Repository (интерфейс маркера) или один из его подчиненных интерфейсов (обычно org.springframework.data.repository.CrudRepository) для указания Spring предоставить реализацию хранилища во время выполнения, если какой-либо из этих интерфейсов не будет расширен, вы получите

bean-компонент типа 'com.alon.repository.EmployeeRepository', который не найден.

0 голосов
/ 01 июля 2019

Я полагаю, вы пытаетесь использовать данные пружины JPA. Что вы можете проверить / отладить:

  • Выполнено ли JpaRepositoriesAutoConfiguration? Вы можете увидеть это в журнале запуска на уровне журнала отладки
  • Что-то меняется, если вы дополнительно добавляете @EnableJpaRepositories с соответствующими базовыми пакетами.
  • Добавьте @ComponentScan с соответствующими пакетами, обычно @SpringBootApplication должен это сделать, но на всякий случай.

Вы также можете проверить документацию autconfig: https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html

РЕДАКТИРОВАТЬ: см. Комментарий от @ ali4j: Я не видел, чтобы это был общий интерфейс репозитория пружин, а не интерфейс данных пружин

С уважением, WiPu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...