idea 注入mapper报错报红的几种解决方案 |
您所在的位置:网站首页 › idea关闭注释报错 › idea 注入mapper报错报红的几种解决方案 |
铁子们,快扫码关注啦!或 wx搜索:“聊5毛钱的java”,关注可领取博主的Java学习视频+资料,保证都是干货 相信大家在使用idea的时候一定会遇到这样的问题,就是在service里注入mapper的时候,明明代码没有问题,也可以运行,但是idea它就是给你报个错,有个红色的波浪线在下面,这让人感觉很不舒服。怎么办呢? 先来大概说一下,产生这种现象的原因。idea其实是非常智能的,它可以理解Spring的上下文,然鹅 XxxxMapper 这种接口是Mybatis的,IDEA它理解不了。再加上 @Autowired 这个注解呢,它默认情况下要求依赖对象(也就是 XxxxMapper )必须存在,而IDEA认为这个对象的实例/代理是个null,所以就友好地给个提示,给你报个红~ 今天就说一下以下几种解决方案 方法1:为 @Autowired 注解设置required = false使用 @Autowired 注解时,若希望允许null值,可设置required = false 像这样:
但是,这种方式有点蛋疼!一个庞大的既有项目,可能到处都在引用Mapper,总不能到处都补上 required = false 吧。而且对于新手/新员工,很难一眼看懂加required = false属性只是为了解决IDEA的警告。 方法2:用 @Resource 替换 @Autowired像这样:
这种方式挺赞,但如果一个项目已经大量使用@Autowired,然后为了个警告到处改成@Resource,也有点蛋疼。 方法3:在Mapper接口上加上@Repository注解像这样:
@Autowired private CashTicketMapper cashTicketMapper; 不再报错。 当然,如果你用@Component替换@Repository也是可以的。原理大致:IDEA不是认为 userMapper 是个null… 加个@Repository注解或者@Component骗一下IDEA就OK了…… 这种方式也比较赞,改动小,也简单,我比较喜欢。 方法4:用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报错报红的几种解决方案,希望对你有所帮助~ 铁子们,如果觉得文章对你有所帮助,可以点关注,点赞 也可以关注下公众号:扫码或 wx搜索:“聊5毛钱的java”,欢迎一起学习交流,关注公众号可领取博主的Java学习视频+资料,保证都是干货 3Q~ 纯手敲原创不易,如果觉得对你有帮助,可以打赏支持一下,哈哈,感谢~
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |