IDEA 中,@Autowired
显示红线一般情况是注入 Mapper 或者 Dao 时出现的,如下图:
这个报错是因为 Mapper 或者 Dao 上没有加 @Repository
或者 @Mapper
,@Autowired
注入时就判断为这不是一个 Bean。
不建议通过加上面两个注解的方式解决这个问题,因为没有必要。
SpringBoot 启动类上的
@MapperScan("com.sevnce.**.mapper")
已经扫描了所有的 Mapper 进行注入,不需要再加注解进行注入。
针对这一情况,有如下解决办法:
- 一般 Mapper 都有对应的 Service 进行封装,改为注入 Service 就可以避免这个问题,且更加符合调用规范(推荐)。
- 如果没有对应的 Service 进行封装,或者封装的 Service 不能满足业务需求,必须用 Mapper,那建议不管(虽然这样显示红线,但并不影响代码运行)。
- 如果实在强迫症受不了这个红线,建议将
@Autowired
改为@Resource
,即可解决这个问题。 - 虽然也可以通过 IDEA 设置的方式不显示红线,但不推荐这样做,因为这样有可能会忽略其他影响代码运行的红线提示。