当前位置: 首页 > 知识库问答 >
问题:

SpringBootApplication无法在子包下找到bean

邓开济
2023-03-14

我在启动我的SpringBootApplication时遇到了这个错误。

Description:

Field XXX in com.helloworld.www.batch.SomeServiceImpl required a bean of type 'com.helloworld.www.batch.repository.SomeRepository' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.helloworld.www.batch.repository.SomeRepository' in your configuration.

这是我的项目布局,我有我的SpringBoot应用程序和存储库。我用“@SpringBootApplication”注释了我的SpringBootApplication,但它找不到“SomeRepository”bean类。

我必须用“EnableJpaRepository”注释它,并在它能检测“某些存储库”bean类之前指示存储库包吗?

com.helloworld.www
+SpringBootApplicationName.java
com.helloworld.www.batch.repository
+SomeRepositoryName.java

更新后,我用@Repository注释了我的存储库,它只包含一个没有任何实现类的接口。

@Repository
public interface SomeRepository extends PagingAndSortingRepository<SomeModel, Integer> { }

下面是我在“com.helloworld.www”包下的主要应用程序类

@SpringBootApplication
public class SomeApplication {
    public static void main(String[] args) {
        SpringApplication.run(SomeApplication.class);
    }
}

共有1个答案

陆俭
2023-03-14

我认为这不是一个“简单”的注射问题。看起来您正在使用spring数据。必须注入的存储库实际上是一个接口,而不是具体的bean实现。

Spring Data引擎应该能够“找到”你的存储库,并在运行时创建一个真正的实现(由代理机制支持)。然后,它将生成的代理放到应用程序上下文中,然后才能将其注入到其他bean中。

在本例中,似乎这个将存储库转换为bean的“引擎”出于某种原因不起作用,因此在服务实例化时(SomeServiceImpl)没有实际的bean表示(已从中生成)存储库。

很难说得更多,因为您没有显示任何与spring数据相关的配置,也没有提供该存储库的代码。。。

 类似资料:
  • 我在这里遵循指南,https://spring.io/guides/gs/spring-boot/克隆了项目,用Gradle构建,并试图运行...应用程序运行良好。然后我根据我的要求更改了一些文件结构,并试图运行那里给出的单元测试用例,但得到这个错误- 找不到@SpringBootConfiguration,您需要使用@ContextConfiguration或@SpringBootTest(类=

  • 问题内容: 有什么原因导致Nose在Ubuntu 9.04中找不到测试? 我正在使用鼻子0.11.1和python 2.5.4。 只有明确指定文件名,我才能运行测试。如果我没有指定文件名,它将显示 0个测试 。 相同的项目在Mac上可以很好地运行测试,所以我很困惑! 问题答案: 一些相关的东西,如果您正在目录之外运行测试,即 其中tests是我的测试文件夹的名称,并且在.py模块之一中具有单独的p

  • 问题内容: 所以我刚刚安装了Ubuntu,这是我第一次在Linux环境中工作,所以请耐心等待。 无论如何,我直接从Oracle下载了Java 8 JDK,但我知道也有一个适用于Java 8的OpenJDK。我有两个问题。 Oracle版本和OpenJDK有什么区别。优点缺点? 当我尝试获取OpenJDK 8时,我做不到。我正在粘贴终端命令和到达此处的错误消息,以寻求建议。再说一次,对于Linux来

  • 问题内容: 当我尝试使用安装npm时,出现以下错误: E:无法找到软件包npm 为什么找不到npm?我正在使用Debian 9并且已经运行了 问题答案: 从官方的Node.js文档中: Node.js软件包在Debian Sid(不稳定),Jessie(测试)和Wheezy(wheezy-backports)的官方存储库中也以“ nodejs”的形式提供。 它仅安装nodejs二进制文件。 因此,

  • 我在pycharm中运行代码时遇到多个问题。由于我是一名学生,我使用的是受版权保护的代码,我不能在这里分享,但我可以向你保证,它与代码无关。 每当我试图运行代码时,我都会得到以下错误: 我已经安装了适用于python3.8的numpy,它也显示在包解释器中,但是Pycharm一直试图在出于某种原因,即使我的系统解释器设置为Python 3.8。 我还尝试用3.8中的venv运行代码。还是同样的错误

  • 我一直在遵循gRPC教程,这非常好。当我尝试将https://github.com/grpc-ecosystem/grpc-gateway添加到我的项目时,问题就开始了。我使用他们给你的命令: 我在我的原型中导入包: 我在上面的“文件未找到”行收到错误。当我复制项目中的文件时,它们会被找到,但当我运行命令时 它会抱怨找不到文件。 有人能告诉我如何使grpc网关正常工作的正确方法吗? 我目前使用Go