专业购物网站建设价格,如何在海外推广网站,wordpress 简约企业,厦门广告公司网站建设文章目录 前言方法1#xff1a;为 Autowired 注解设置required false方法2#xff1a;用 Resource 替换 Autowired方法3#xff1a;在Mapper接口上加上Repository注解方法4#xff1a;用Lombok方法5#xff1a;把IDEA的警告关闭掉方法6#xff1a;不用管他 前言
相信大… 文章目录 前言方法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不用管他
这只是一个提示并不影响程序运行如果没有强迫症的话可以不用管他。