• 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

  • 相关阅读:
    结构~函数~输入输出
    常用缀名
    结构
    枚举
    int argc char*argv[]
    字符串的操作
    字符串函数#include<string.h>
    指针的应用
    2019.1.25~2019.1.30学习总结
    v-for
  • 原文地址:https://www.cnblogs.com/duanxz/p/3518894.html
Copyright © 2020-2023  润新知