NoSuchBeanDefinitionException库中的存储库

时间:2018-07-10 06:50:54

标签: java spring spring-boot spring-data-jpa

我创建了一个库,用于在多个Spring Boot应用程序上共享代码。

该库包含一个存储库类// Library: RequestRepository.java package org.test.lib; public interface RequestRepository extends CrudRepository<Request, Integer> {} // Application: Application.java package org.test.app; @SpringBootApplication @ComponentScan(basePackages = {"org.test.app", "org.test.lib"}) public class Application { // ... } 。将库添加到Spring Boot项目后,它会编译并成功运行单元测试。

NoSuchBeanDefinitionException

当Spring尝试自动连接存储库时,启动应用程序会引发org.springframework.beans.factory.NoSuchBeanDefinitionException

  

原因:   org.test.lib.repositories.RequestRepository:否   类型为“ doc.setFontStyle('normal'); doc.setFontSize(12); var columns = [ { title: "Month", dataKey: "Month" }, { title: "2017", dataKey: "2017" }, ]; var vehicle=[{'Month':'January','2017':'Fatal'},{'Month':'February'},{'Month':'March'},{'Month':'April'},{'Month':'May'},{'Month':'June'},{'Month':'July'},{'Month':'August'},{'Month':'September'},{'Month':'October'},{'Month':'November'},{'Month':'December'}]; doc.autoTable(columns,vehicle, { startY:55, margin: {horizontal: 5}, bodyStyles: {valign: 'middle'}, styles: {overflow: 'linebreak'}, theme: 'grid', columnStyles: { text: { columnWidth: 'wrap' }, Month: { columnWidth: '10', fontStyle: 'bold', textColor: 40 , valign: 'left' }, 2017: { columnWidth: '20', fontStyle: 'bold', textColor: 40 , valign: 'left' } }); doc.save('Accident.pdf'); } ”的合格Bean   可用:至少有1个符合自动装配条件的bean   候选人。依赖项注释:{}

我为组件扫描启用了DEBUG日志记录,并获得了有关存储库的以下输出。

  

2018-07-10 08:33:25.035调试14976 --- [主要]   .i.s.PathMatchingResourcePatternResolver:已解析的位置模式   [classpath *:org / test / lib / ** / *。class]到资源[URL   [jar:file:/ C:/ Users /.../ lib-request-1.0.0-SNAPSHOT.jar!/org/test/lib/repositories/RequestRepository.class],   ...

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您必须使用@EnableJpaRepositories明确地在Spring Boot应用程序之外启用存储库。

@SpringBootApplication
@EnableJpaRepositories(basePackages = {"org.test.app", "org.test.lib"})
@ComponentScan(basePackages = {"org.test.app", "org.test.lib"})
public class Application {
  // ...
}

请参见Spring guide

  

默认情况下,Spring Boot将启用JPA存储库支持并查看   包(及其子包),其中@SpringBootApplication是   位于。如果您的配置具有JPA存储库接口   包中的定义不可见,您可以指出   使用@EnableJpaRepositories及其类型安全的备用软件包   basePackageClasses=MyRepository.class参数。

用于使用库集@Entity中的@EntityScan类。