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

方法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 CashTicketMapper cashTicketMapper;
不再报错。

当然,如果你用@Component替换@Repository也是可以的。原理大致:IDEA不是认为 userMapper 是个null…

加个@Repository注解或者@Component骗一下IDEA就OK了……

这种方式也比较赞,改动小,也简单,我比较喜欢。

方法4:用Lombok


像这样:

idea 注入mapper报错报红的几种解决方案_第1张图片
Lombok生成的代码是这样的:

@Service
public class TestService {undefined
    private CashTicketMapper cashTicketMapper;
    @Autowired
    public TestService(CashTicketMapper cashTicketMapper;) {undefined
        this.cashTicketMapper= cashTicketMapper;
    }
}
但如果自己手写成Lombok生成的代码,IDEA依然会给你报警告 。我猜,应该是IDEA的Lombok插件把IDEA搞懵逼了…所以不提示了…

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


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

但是大家可以按照下图去试试

idea 注入mapper报错报红的几种解决方案_第2张图片

你可能感兴趣的:(intellij-idea,java,intellij,idea)