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

2023-12-23 13:28

本文主要是介绍idea 注入mapper报错报红的几种解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 方法1:为 @Autowired 注解设置required = false
  • 方法2:用 @Resource 替换 @Autowired
  • 方法3:在Mapper接口上加上@Repository注解
  • 方法4:用Lombok
  • 方法5:把IDEA的警告关闭掉
  • 方法6:不用管他

前言

相信大家在使用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;@Autowiredpublic TestService(CashTicketMapper cashTicketMapper;) {this.cashTicketMapper= cashTicketMapper;}
}

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

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

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

但是大家可以按照下图去试试
在这里插入图片描述

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

方法6:不用管他

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

这篇关于idea 注入mapper报错报红的几种解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/528182

相关文章

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

python忽略warnings的几种方法

《python忽略warnings的几种方法》本文主要介绍了几种在Python忽略警告信息的方法,,可以使用Python内置的警告控制机制来抑制特定类型的警告,下面就来介绍一下,感兴趣的可以了解一下... 目录方法 1: 使用 warnings 模块过滤特定类型和消息内容的警告方法 2: 使用 warnin

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

SpringBoot嵌套事务详解及失效解决方案

《SpringBoot嵌套事务详解及失效解决方案》在复杂的业务场景中,嵌套事务可以帮助我们更加精细地控制数据的一致性,然而,在SpringBoot中,如果嵌套事务的配置不当,可能会导致事务不生效的问题... 目录什么是嵌套事务?嵌套事务失效的原因核心问题:嵌套事务的解决方案方案一:将嵌套事务方法提取到独立类