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

@Autowired 默认值的实现源码:


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


解决方案4:使用@Resource注解


使用 @Resource 注解替换 @Autowired 注解也可以避免报错,它们的对比效果如下:


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


@Resource 注解和 @Autowired 注解以当前的场景来说,它们的主要区别是 @Resource 是 Java 自身提供的注解,而 @Autowired 是 Spring 提供的注解,@Autowired 默认值为 required=true,所以必须要一个非 NULL 的对象,当 IDEA 检测不到对象为 NULL 时就会报错,而 @Resource 并没有这项要求。


总结


使用 @Autowired 注解导入 Mapper 对象报错的原因,是因为 @Autowired 默认情况下,需要注入一个非 NULL 的对象,而被 @Mapper 修饰的类为 MyBatis 的注解,IDEA 并不能很好的识别其为非 NULL 对象,因此就会报错。当然,它的解决方案也有很多,推荐使用 @Resource 替代 @Autowired 注解的方式来解决此问题。

上一篇:如何计算tomcat线程池大小?


下一篇:Android studio运行时报错,方法,类找不到,或者JVM内存溢出解决方案