zoukankan      html  css  js  c++  java
  • 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时,本人觉得并不是很方便,不如使用其扩展出来的接口方便。但是在使用接口的过程中,遇到了一个问题,如下:

        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 入口类上添加

        (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/u011659172/article/details/51537602

    https://blog.csdn.net/zhongzh86/article/details/54313706

     https://blog.csdn.net/andy_zhang2007/article/details/84064862

  • 相关阅读:
    面向对象编程:这里我说了算!
    一步步构建大型网站架构
    如何设计伟大产品:要学会讲故事
    如何从组件开始构建一座城市?
    深度理解依赖注入(Dependence Injection)
    Java Study For Seven Day( 面向对象三)
    Java Study For Five Day( 面向对象一)
    Java Study For Six Day( 面向对象二)
    关于学习效率的探讨
    CodeForces
  • 原文地址:https://www.cnblogs.com/duanxz/p/3518894.html
Copyright © 2011-2022 走看看