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对象有红线的文章就介绍到这了,更多相关idea 使用mapper红线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用Springboot打成jar包thymeleaf的问题
这篇文章主要介绍了使用Springboot打成jar包thymeleaf的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11Java中的interrupt、interrupted和isInterrupted方法区别详解
这篇文章主要介绍了Java中的interrupt、interrupted和isInterrupted方法区别详解,interrupt用于中断线程,调用该方法的线程的状态将会被设置为中断状态,线程中断仅仅是设置线程的中断状态位,并不会停止线程,需要用户自己去监视线程的状态并作出处理,需要的朋友可以参考下2023-12-12Mybatis自定义TypeHandler解决特殊类型转换问题详解
这篇文章主要介绍了Mybatis自定义TypeHandler解决特殊类型转换问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11SpringBoot @PropertySource与@ImportResource有什么区别
这篇文章主要介绍了SpringBoot @PropertySource与@ImportResource有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2023-01-01
最新评论