目录
  • 背景:
  • 问题描述
  • 原因分析:
  • 解决方案
    • 1、修改idea 配置
  • 参考链接:

    背景:

    IDEA开发工具,springboot +mybatis项目

    (这个是不需要改的,也不算是问题,因为项目并不会报错,只是作者好奇找了下问题,并记录一下)

    问题描述

    mapper对象在service层有红线,项目可以正常使用,想知道为什么会出现这种情

    Idea工具中使用Mapper对象有红线的解决方法

    原因分析:

    @Autowired 默认是要求注解对象不为空

    @Autowired 默认是要求注解对象不为空,IDEA在自动检测时认为mapper的实例是null,所以飘红提醒一下。实际使用@MapperScan,是在项目启动时才会去扫描mapper文件,并生成代理类,所以项目运行也不会报错。

    这里想到@Service注解,在controller层中使用的时候就没有报红,是因为含有@Component,

    @Component作用就是把注解的类实例化到spring容器中。

    解决方案

    这里提供4中解决方式

    1、修改idea 配置

    下图是通过点击标红的提示进入的,也可以从菜单上进入:file -> settings-> editor->inspections->autowiring for bean class 取消勾选,关闭 autowiring 校验。

    Idea工具中使用Mapper对象有红线的解决方法

    Idea工具中使用Mapper对象有红线的解决方法

    Idea工具中使用Mapper对象有红线的解决方法

    2、@Autowired 修改为 @Autowired(required = false)

    3、@Autowired 修改为 @Resource

    @Resource 不校验是否为空

    4、mapper 类上添加 @Repository 或者 @Component 或者lombok 中的@RequiredArgsConstructor

    本质是加了 @Component 注册到项目中,满足IDEA的检验

    参考链接:

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

    IDEA中mapper注入报红的问题(springboot

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。