库中存储库的 NoSuchBeanDefinitionException

2024-01-09

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

该库包含一个 Repository 类RequestRepository。将库添加到 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 {
  // ...
}

启动应用程序会引发NoSuchBeanDefinitionException当 Spring 尝试自动装配存储库时。

造成原因:org.springframework.beans.factory.NoSuchBeanDefinitionException: 不 类型为 ' 的限定 beanorg.test.lib.repositories.RequestRepository' 可用:预计至少有 1 个符合自动装配资格的 bean 候选人。依赖注释:{}

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

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

我错过了什么?


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

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

See 弹簧导轨 https://spring.io/guides/gs/accessing-data-jpa.

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

库中存储库的 NoSuchBeanDefinitionException 的相关文章

随机推荐