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中。

posted @   古兰精  阅读(15255)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-06-15 浅析mybatis懒加载导致无法序列化的问题、Json序列化对象时错误Could not write JSON: No serializer found for class
2020-06-15 正则表达式中 的$1,$2与实际应用
2018-06-15 深入理解VUE样式style层次分析
2017-06-15 浅析如何自定义Java异常类且修改返回http状态码及解决状态码始终是200的问题和303状态码理解
点击右上角即可分享
微信分享提示