idea注入mapper报错报红的几种解决方案

 更新时间:2023年12月25日 10:07:12   作者:五月天的尾巴  
相信大家在使用idea的时候一定会遇到这样的问题,就是在service里注入mapper的时候,明明代码没有问题,也可以运行,但是idea它就是给你报个错,有个红色的波浪线在下面,所以本文将给大家介绍了idea注入mapper报错报红的几种解决方案,需要的朋友可以参考下

前言

相信大家在使用idea的时候一定会遇到这样的问题,就是在service里注入mapper的时候,明明代码没有问题,也可以运行,但是idea它就是给你报个错,有个红色的波浪线在下面,这让人感觉很不舒服。怎么办呢?

在这里插入图片描述

先来大概说一下,产生这种现象的原因。idea其实是非常智能的,它可以理解Spring的上下文,然而 XxxxMapper 这种接口是Mybatis的,IDEA它理解不了。再加上 @Autowired 这个注解呢,它默认情况下要求依赖对象(也就是 XxxxMapper )必须存在,而IDEA认为这个对象的实例/代理是个null,所以就友好地给个提示,给你报个红~

今天就说一下以下几种解决方案

方法1:为 @Autowired 注解设置required = false

使用 @Autowired 注解时,若希望允许null值,可设置required = false

像这样:

在这里插入图片描述

这样就不会有警告了。原因很好理解:IDEA认为cashTicketMapper是个null,给了警告;加上required = false后,使用 @Autowired 注解不再去校验userMapper是否存在了,也就不会有警告了。

但是,这种方式有点蛋疼!一个庞大的既有项目,可能到处都在引用Mapper,总不能到处都补上 required = false 吧。而且对于新手/新员工,很难一眼看懂加required = false属性只是为了解决IDEA的警告。

方法2:用 @Resource 替换 @Autowired

像这样:

在这里插入图片描述

这样也不会再有讨厌的警告。如果你对原因感兴趣,不妨去了解一下@Autowired 与@Resource的区别

这种方式挺赞,但如果一个项目已经大量使用@Autowired,然后为了个警告到处改成@Resource,也有点蛋疼。

方法3:在Mapper接口上加上@Repository注解

像这样:

在这里插入图片描述

这样也能让你的

 @Autowired
private StdNmRecordMapper stdNmRecordMapper;

不再报错。

当然,如果你用@Component替换@Repository也是可以的。原理大致:IDEA不是认为 userMapper 是个null…

加个@Repository注解或者@Component骗一下IDEA就OK了……

这种方式也比较赞,改动小,也简单,我比较喜欢。

方法4:用Lombok

像这样:

在这里插入图片描述

Lombok生成的代码是这样的:

@Service
public class TestService {
    private CashTicketMapper cashTicketMapper;
    @Autowired
    public TestService(CashTicketMapper cashTicketMapper;) {
        this.cashTicketMapper= cashTicketMapper;
    }
}

但如果自己手写成Lombok生成的代码,IDEA依然会给你报警告 。我猜,应该是IDEA的Lombok插件把IDEA搞懵逼了…所以不提示了…

方法5:把IDEA的警告关闭掉

这个方法比较不推荐,感觉没有提示的IDEA是没有灵魂的,所以不推荐。我也从来不去修改IDEA的任何警告设置。

但是大家可以按照下图去试试

在这里插入图片描述

好了,以上就是 idea 注入mapper报错报红的几种解决方案,希望对你有所帮助~

方法6:不用管他

这只是一个提示,并不影响程序运行,如果没有强迫症的话,可以不用管他。

到此这篇关于idea注入mapper报错报红的几种解决方案的文章就介绍到这了,更多相关idea注入mapper报错报红内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详细介绍Java内存泄露原因

    详细介绍Java内存泄露原因

    详细介绍Java内存泄露原因,需要的朋友可以参考一下
    2013-05-05
  • Spring Cloud OpenFeign REST服务客户端原理及用法解析

    Spring Cloud OpenFeign REST服务客户端原理及用法解析

    这篇文章主要介绍了Spring Cloud OpenFeign REST服务客户端原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 深入学习spring cloud gateway 限流熔断

    深入学习spring cloud gateway 限流熔断

    这篇文章主要介绍了深入学习spring cloud gateway 限流熔断,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java BigDecimal除法精度和格式化输出方式

    Java BigDecimal除法精度和格式化输出方式

    这篇文章主要介绍了Java BigDecimal除法精度和格式化输出方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot3.x打包Docker容器的实现

    SpringBoot3.x打包Docker容器的实现

    这篇文章主要介绍了SpringBoot3.x打包Docker容器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • springboot 正确的在异步线程中使用request的示例代码

    springboot 正确的在异步线程中使用request的示例代码

    这篇文章主要介绍了springboot中如何正确的在异步线程中使用request,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • JAVA实现sm3加密签名以及防止重复攻击

    JAVA实现sm3加密签名以及防止重复攻击

    这篇文章主要给大家介绍了关于JAVA实现sm3加密签名以及防止重复攻击的相关资料,SM3是签名算法,和MD5一样(对于应用层来说),SM4是对称加密算法,和AES一样(对于应用层来说),需要的朋友可以参考下
    2023-10-10
  • json序列化时忽略值为null的字段2种方式实例

    json序列化时忽略值为null的字段2种方式实例

    这篇文章主要给大家介绍了关于json序列化时忽略值为null的字段的2种方式,当对象中某个字段为null时,我们希望将对象转换成json时为null的字段不会被转换到json字符串,里面需要的朋友可以参考下
    2023-10-10
  • Java OpenCV图像处理之背景消除

    Java OpenCV图像处理之背景消除

    GMM(高斯混合模型)是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息表示别境,然后使用统计差分进行目标像素判断达到预期效果。本文将利用GMM方法实现图像背景消除,需要的可以参考一下
    2022-02-02
  • java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析

    这篇文章主要介绍了java中switch case语句需要加入break的原因解析的相关资料,需要的朋友可以参考下
    2017-07-07

最新评论