java - "No qualifying bean of type"用于 Spring Boot 中的 JPA 存储库

标签 java spring jpa spring-boot spring-data

我正在使用 Spring Boot 实现 Rest API。由于我的实体类来自另一个包中的一个包,因此我必须使用注释 EntityScan 来指定它。另外,我使用 EnableJpaRepositories 来指定定义 JPA 存储库的包。这是我的项目的样子:

enter image description here

//Application.java

@Configuration
@EnableAutoConfiguration
@ComponentScan
@EntityScan("org.mdacc.rists.cghub.model")
@EnableJpaRepositories("org.mdacc.rists.cghub.ws.repository") 

在我的 Controller 类中,我有一个 Autowiring 的 SeqService 对象。

//SeqController.java

@Autowired private SeqService seqService;

@RequestMapping(value = "/api/seqs", method = GET, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<List<SeqTb>> getSeqs() {
    List<SeqTb> seqs = seqService.findAll();
    return new ResponseEntity<List<SeqTb>>(seqs, HttpStatus.OK);
}

SeqService 是一个接口(interface),我通过该接口(interface)为该 SeqServiceBean 创建了一个 Bean 类。在 SeqServiceBean 中,我 Autowiring 了 JPA 存储库:

// SeqServiceBean.java

@Autowired private SeqRepository seqRepository;

@Override
public List<SeqTb> findAll() {
    List<SeqTb> seqs = seqRepository.findAll();
    return seqs;
}

//SeqRepository.java

@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {

    @Override
    public List<SeqTb> findAll();

    public SeqTb findByAnalysisId(String analysisId);
}

但是由于以下错误,应用程序无法启动:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.mda.rists.cghub.ws.repository.SeqRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]

我不明白这个错误。和合格的 bean 有什么关系?

最佳答案

您在 EnableJpaRepositories 中扫描了错误的包。没有 org.mdacc.rists.cghub.ws.repository 包。所以,改用这个:

@EnableJpaRepositories("org.mda.rists.cghub.ws.repository") 

Spring Boot 不需要任何特定的代码布局即可工作,但是,有一些最佳实践可以帮助您。查看 spring boot documentation构建代码的最佳实践。

关于java - "No qualifying bean of type"用于 Spring Boot 中的 JPA 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36072445/

相关文章:

java - 使用 MySQL 和 Oracle 生成 Hibernate 自动 key

java - 单元测试 JPA 查询

java - 在 Java 中按字面替换正则表达式中的字符

java - JButton 布局设置

java - 安卓工作室 : cannot read packageName from manifest

java - 如何在 JUnit 之外初始化 spring 配置?

java - 从 Spring 3.0 开始用 SpEL 替换 JSP 中的 EL

java - 将输入流分成两个流

mysql - 部署后 spring : Error creating bean , 管道损坏

java - Hibernate 5.2.10 DDL 自动更新到 AWS RDS (MySql 5.6.10a) 创建 TINYBLOB for Instant