@Autowired报错的4种解决方案和原因分析!(1)

简介: @Autowired报错的4种解决方案和原因分析!(1)

微信图片_20220120193129.jpg


上图的报错信息相信大部分程序员都遇到过,奇怪的是虽然代码报错,但丝毫不影响程序的正常执行,也就是虽然编译器 IDEA 报错,但程序却能正常的执行,那这其中的原因又是为何?


报错原因分析


报错的原因首先是因为 IDEA 强大的报警机制,@Autowired 为 Spring 的注解,含义是将某类动态的注入到当前类中,如下图所示:


微信图片_20220120193142.jpg


@Autowired 默认是根据 type 进行注入,并且注入时要求(注入)对象不能为 NULL,默认值如下图所示:


微信图片_20220120193213.jpg


IDEA 报错的原因是:@Autowired 为 Spring 的注解,而注入的 Mapper 对象使用的又是 @Mapper 的注解,然而 @Mapper 又为 MyBaits 的注解,IDEA 能很好的兼容并识别 Spring 的注解,但不能很好的识别 MyBatis 的注解,因此在使用 @Autowired 注解时,IDEA 并不能检测到 @Mapper 注解的对象不为 NULL,因此就会报错。


微信图片_20220120193226.jpg


这就是为什么使用 Spring 的注解 @Repository/@Component... 不报错,而使用 @Mapper 注解却会报错的根本原因,如下图所示:


微信图片_20220120193316.jpg

微信图片_20220120193320.jpg

微信图片_20220120193326.jpg


相关文章
|
Java 测试技术 Spring
springboot测试环境无法注入bean问题分析及解决方案
springboot测试环境无法注入bean问题分析及解决方案
2232 0
springboot测试环境无法注入bean问题分析及解决方案
|
9月前
|
Java 容器
Java实现Autowired自动注入
Test2正常 Test3空指针 因为不在容器里
84 0
|
4月前
|
容器
多线程时Autowired自动注入问题
多线程时Autowired自动注入问题
64 2
|
4月前
|
XML Java 数据格式
spring的核心技术---bean的生命周期加案例分析详细易懂
spring的核心技术---bean的生命周期加案例分析详细易懂
129 1
|
8月前
|
Java 关系型数据库 MySQL
案例09 基于JdbcTemplate的学生信息维护案例
使用Spring JdbcTemplate实现学生信息的新增、修改、删除、查询单个、查询所有功能,并实现MySQL数据库的操作。
54 0
|
9月前
|
缓存 Java 容器
九.Spring源码剖析-Autowired自动注入原理
这篇文章接上一篇文章属性注入讲一讲 @Autowired 注解的实现源码,这个也是面试被问的比较多的。
|
XML 存储 Java
【Spring专题】「原理系列」全方面解析SpringFramework的Bean对象的深入分析和挖掘指南
【Spring专题】「原理系列」全方面解析SpringFramework的Bean对象的深入分析和挖掘指南
128 0
【Spring专题】「原理系列」全方面解析SpringFramework的Bean对象的深入分析和挖掘指南
|
测试技术 容器
@RefreshScope竟然影响性能
@RefreshScope竟然影响性能
499 0
@RefreshScope竟然影响性能
|
Java Spring 容器
通过反射获得并调用类的方法导致@Autowired注入失效的解决方案
通过反射获得并调用类的方法导致@Autowired注入失效的解决方案
390 0
|
搜索推荐 安全 Java
3. 站在使用层面,Bean Validation这些标准接口你需要烂熟于胸
3. 站在使用层面,Bean Validation这些标准接口你需要烂熟于胸

热门文章

最新文章