我创建了一个简单的应用程序,它使用 Spring boot 和 JPA/Hibernate 将消息保存在 postgresql 数据库中。 所有包 Controller/Service/Repository 都位于子包中。
但是我收到一个错误:spring boot 无法识别 DAO 包中的存储库接口(interface)。
我有另一个项目,所有工作都无需使用@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 中的错误代码:
<小时/>应用程序无法启动
<小时/>描述:
app.shellx.service.MessageServiceImpl 中的字段 messageRepository 需要“app.shellx.dao.MessageRepository”类型的 Bean,但无法找到。
注入(inject)点有以下注解: - @org.springframework.beans.factory.annotation.Autowired(required=true)
行动:
考虑在您的配置中定义“app.shellx.dao.MessageRepository”类型的 bean。
编辑:问题已解决。 这是一个依赖错误。 只需添加此 Maven 依赖项即可运行:
org.springframework.boot spring-boot-starter-data-jpa 2.1.4.RELEASE
最佳答案
正确命名并放置包,
com.app
- SpringBootApplication
com.app.controller
- Controller 类
com.app.repo
- Repo 类扩展 CrudRepository (如果提及任何注释请删除)
com.app.model
- 您的表类(实体)
Spring boot 将自动配置
关于java - Spring 启动: Repository interface not found with annotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55846237/