• SptingBoot报错处理:required a bean of type 'XXX' that could not be found、@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})注解作用、@Mapper和@Repository注解的区别


    一、关于解决required a bean of type ‘XXX’ that could not be found.的问题

      报错信息:Parameter 0 of constructor in com.opengauss.exam.user.service.UserService required a bean of type 'com.opengauss.exam.user.dao.UserDao' that could not be found.

      可能问题有三种:

    1、没有给对应的DAO接口注入@Mapper属性

      通常这个问题是有可能是忘记了或者粗心大意所遇到的,也是比较的简单,直接添加@Mapper就可以解决了

    2、Mapper引入的时候引入错了包

      有时候就是同样的引入的Mapper里面,引入的不是我们需要的Mybatis,所以出现找不到的情况,这种情况确实不太好定位,因为这也很难看出来。

    注意

      注意这个@Mapper是不能引入成别的的了

    3、包扫描不到

    (1)是主启动类的报名和你的Bean文件的包裹问题

      看到网上有这种情况:

      注意,我的Bean文件的包名是“org.Choiridong.Security.DAO”,但是!!!重点来了,如果你的启动类是这样子的(我之前启动类就是这样)“org.Choiridong.web”

      请注意,这样子就会有问题,据我了解,之前看到资料是说,主类只会扫面主类文件下面的包,所以,我的Bean文件自然是没有办法扫到的,他只能扫到“org.Choiridong.web”之后的部分,所以把主类名字改成“org.Choiridong”改成这样子之后,就可以了

    (2)忽略了 数据层的扫描

    @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})

      由于刚启动项目的时候没有数据里连接,所以报错了,就加了上述注解,忽略了数据层的扫描。把上述配置去掉改成 @SpringBootApplication 即可。

    二、@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})注解作用

      exclude,排除此类的AutoConfig,即禁止 SpringBoot 自动注入数据源配置。

      DataSourceAutoConfiguration.class 会自动查找 application.yml 或者 properties 文件里的 spring.datasource.* 相关属性并自动配置单数据源「注意这里提到的单数据源」。

      那么问题来了,排除了自动配置,Spring还怎么识别到数据库配置呢?

      答:显然接下来就需要手动配置,what?那我为什么要排除?然后手动指定数据源?

      如果你发现项目中存在这个排除的骚操作,可以在项目中搜一下Java关键字@ConfigurationProperties("spring.datasource ,你可能会发现手动配置数据源的类。

      再来回答为何要手动配置数据源,因为要配置多数据源,上边有提到DataSourceAutoConfiguration.class默认会帮我们自动配置单数据源,所以,如果想在项目中使用多数据源就需要排除它,手动指定多数据源。

    三、@Mapper和@Repository注解的区别

      在用idea写一个实现类时调用了dao层的处理,使用@Autowired注解时被标红线,找不到bean。

      解决办法:在dao加@mapper或者@repository注解。

      这两种注解的区别在于:

    1、使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

    2、@repository则需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注入到ServiceImpl中。

  • 相关阅读:
    检测Linux硬盘IO数据
    获取OrangePI板子CPU温度
    ASP.Net开发WebAPI跨域访问(CORS)的精简流程
    一些常用复合命令
    关于Linux的虚拟内存管理
    Linux中组 与 用户的管理
    linux加载与使用ko驱动
    7z命令行 极限压缩指令
    nodejs的POST请求
    案例:用ajax 方法 解析xml
  • 原文地址:https://www.cnblogs.com/goloving/p/14885121.html
Copyright © 2020-2023  润新知