Idea工具中,使用Mapper对象有红线

背景:

IDEA开发工具,springboot +mybatis项目

(这个是不需要改的,也不算是问题,因为项目并不会报错,只是作者好奇找了下问题,并记录一下)


问题描述

mapper对象在service层有红线,项目可以正常使用,想知道为什么会出现这种情


原因分析:

@Autowired 默认是要求注解对象不为空

@Autowired 默认是要求注解对象不为空,IDEA在自动检测时认为mapper的实例是null,所以飘红提醒一下。实际使用@MapperScan,是在项目启动时才会去扫描mapper文件,并生成代理类,所以项目运行也不会报错。

这里想到@Service注解,在controller层中使用的时候就没有报红,是因为含有@Component,

@Component作用就是把注解的类实例化到spring容器中。


解决方案

这里提供4中解决方式

1、修改idea 配置

下图是通过点击标红的提示进入的,也可以从菜单上进入:file -> settings-> editor->inspections->autowiring for bean class 取消勾选,关闭 autowiring 校验。

 

 

 

2、@Autowired 修改为 @Autowired(required = false)

3、@Autowired 修改为 @Resource

@Resource 不校验是否为空

4、mapper 类上添加 @Repository 或者 @Component 或者lombok 中的@RequiredArgsConstructor

本质是加了 @Component 注册到项目中,满足IDEA的检验

参考链接:

idea 注入mapper报错报红的几种解决方案_嗑嗑磕嗑瓜子的猫的博客-CSDN博客_mapper报红

IDEA中mapper注入报红的问题(springboot)_葭月初九的博客-CSDN博客

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值