前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2018-12-19 关于SpringBoot启动过程中报NoSuchBeanDefinitionException的异常的问题

2018-12-19 关于SpringBoot启动过程中报NoSuchBeanDefinitionException的异常的问题

作者头像
Albert陈凯
发布2018-12-27 17:02:23
2.6K0
发布2018-12-27 17:02:23
举报
文章被收录于专栏:Albert陈凯Albert陈凯

SpringBoot JPA 中无法注入 JpaRepository 接口的问题及解决方案

错误:

在Springboot 框架中使用JPA的过程中,怎么来实现数据库操作底层的交互呢?Spring JPA其实已经提供了一套很全面的解决方案,实现对数据库的增、删、查、改只需要继承JPA实现类:

org.springframework.data.jpa.repository.query.SimpleJpaRepository

或者直接继承JPA提供的接口:

org.springframework.data.jpa.repository.JpaRepository org.springframework.data.jpa.repository.CrudRepository 使用实现类:SimpleJpaRepository时,本人觉得并不是很方便,不如使用其扩展出来的接口方便。但是在使用接口的过程中,遇到了一个问题,如下:

代码语言:javascript
复制
No qualifying bean of type 'xxx.xxx.xxx' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

或:

Not a managed type: class xxx.xxx.xxx

其实导致这个异常的原因很简单,就是因为Springboot未能正常将其扫描并没注入到容器中。而且一般在使用Springboot的初始框架中,启动类位置于所有Service,Entity,Controller或者其它类的最上层的话,这个问题很少会出现。

解决方案:

方案一、把 @SpringBootApplication 注解的 SpringBoot 入口类移到上层 root 包中,使 JpaRepository 子接口位于 root 包及其子包中。

方案二、在 SpringBoot 入口类上添加

代码语言:javascript
复制
(1) @ComponentScan(basePackages = "xxx.xxx.xxx"):扫描 @Controller、@Service 注解;
(2) @EnableJpaRepositories(basePackages = "xxx.xxx.xxx"):扫描 @Repository 注解;
(3) @EntityScan(basePackages = "xxx.xxx.xxx"):扫描 @Entity 注解;

参考原文:https://blog.csdn.net/guokexiaohao/article/details/79741023


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档