Я создал простое приложение, которое сохраняет сообщение в базе данных postgresql, используя Spring boot и JPA / Hibernate.
Все пакеты Controller / Service / Repository находятся в подпакетах.
Но я получаю ошибку: весенняя загрузка не распознает интерфейс репозитория в пакете DAO.
У меня был другой проект, где все работали без использования @EnableJpaRepositories, но в этом проекте (той же структуры) у меня была эта проблема.
Структура проекта:
app.shellx (функция main ())
---- app.shellx.dao
---- app.shellx.controller
---- app.shellx.service
MessageRepository.java
package app.shellx.dao;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import app.shellx.model.Message;
@Repository
public interface MessageRepository extends CrudRepository<Message, Long> {
}
MessageServiceImpl.java
package app.shellx.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import app.shellx.dao.MessageRepository;
import app.shellx.model.Message;
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
private MessageRepository messageRepository;
public void add(Message message) {
this.messageRepository.save(message);
}
}
Код ошибки в Eclipse:
Приложение не удалось запустить
Описание:
Поле messageRepository в app.shellx.service.MessageServiceImpl требует bean-компонент типа 'app.shellx.dao.MessageRepository', который не может быть найден.
Точка впрыска имеет следующие аннотации:
- @ org.springframework.beans.factory.annotation.Autowired (обязательно = true)
Действие:
Рассмотрите возможность определения bean-компонента типа 'app.shellx.dao.MessageRepository' в вашей конфигурации.
РЕДАКТИРОВАТЬ: ПРОБЛЕМА РЕШЕНА.
Это была ошибка зависимости.
Просто добавьте эту зависимость Maven, и она работает:
org.springframework.boot
весна-загрузка-стартер-данные JPA
2.1.4.RELEASE