Intellij IDEA 如何去掉 @Autowired 注入警告

@Autowired

private ProductMapper productMapper;

但是这样Intellij IDEA会显示红色告警,提示不能自动注入。

当我们在Controller层注入Service时我们也经常直接在Filed上使用@Autowired 注解,这时候不显示红色警告,但是也显示Field injection is not recommended 的建议

原因

第一种情况是因为IDEA可以识别并理解Spring的上下文。然而Mapper接口是Mybatis的,IDEA理解不了。所以会出现红色告警。

而第二种原因是因为官方不推荐使用Filed进行注解,而推荐使用构造器或Setter方法进行注解,像下面两种写法就不会出现警告。

private final ProductService productService;

@Autowired

public ProductController(ProductService productService) {

this.productService = productService;

}

or

private ProductService productService;

@Autowired

public void setProductService(ProductService productService) {

this.productService = productService;

}

问题是什么

Field注入看起来非常好,够简洁,代码通俗易懂。你的类可以专注于业务而不被依赖注入所污染。你只需要把@Autowired扔到变量之上就好了,不需要特殊的构造器或者set方法,依赖注入容器会提供你所需的依赖。但是Field注入会带来2个问题:

  • 当注入的对象依赖其他对象,而被依赖的对象没被创建的话就会出现空指针异常。

  • 这样的类没办法在容器之外被重用,也不能期望反射提供其所需的依赖。

详细原因大家可以去这篇文章查看:http://olivergierke.de/2013/11/why-field-injection-is-evil/

构造器注入 VS Setter注入

Setter应该被用来注入可变的依赖。当没有提供依赖时,这个类也应该能够运转。当实例化对象后,这些依赖也能随时改变。其实也视情况而变,有时,一个不变的对象是理想状态。有时,最好是能在运行期间改变对象的属性。

构造器注入对象需要依赖的对象初始化后才能正常运转,通过构造器提供这些依赖就能保证对象初始化后就能被使用。使用构造器注入的一个可能的影响就是循环依赖。

怎么解决


我们可以使用Lombok提供的注解 @RequiredArgsConstructor 来解决这两个问题(Lombok这个大家项目都会使用吧)

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 28
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要去除Intellij IDEA中@Autowired注入的红色波浪线,可以按照以下步骤进行操作:首先,取消勾选"Field injection warning"选项,这可以解决@Autowired显示黄色波浪线的问题。其次,取消勾选"Autowiring for bean class"选项,这可以解决注入类显示红色波浪线的问题。这样,你就可以成功去除@Autowired注入的红色波浪线了。 参考文献: 主要介绍了Intellij IDEA如何去掉@Autowired 注入警告的方法,通过示例代码介绍得非常详细。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Idea中@Autowired 黄色波浪线问题,注入类显示红色波浪线,去除重复代码导致的波浪黄线,去除xml文件里sql...](https://blog.csdn.net/weixin_46775407/article/details/116448816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Intellij IDEA如何去掉@Autowired 注入警告的方法](https://download.csdn.net/download/weixin_38555304/12726285)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值