当前位置: 首页 > news >正文

扬州网站推广旅行用品东莞网站建设

扬州网站推广,旅行用品东莞网站建设,家具外贸网站,小说网站需求分析在使用IDEA编写Spring相关的项目时#xff0c;当在字段上使用Autowired注解时#xff0c;总会出现一个波浪线提示#xff1a;”Field injection is not recommended.” 这让我不禁疑惑#xff1a;我每天都在使用这种方式#xff0c;为何不被推荐呢#xff1f;今天#x…在使用IDEA编写Spring相关的项目时当在字段上使用Autowired注解时总会出现一个波浪线提示”Field injection is not recommended.” 这让我不禁疑惑我每天都在使用这种方式为何不被推荐呢今天我决定深入探究其中的原因。 众所周知Spring框架提供了三种可选的依赖注入方式构造器注入、Setter方法注入和Field注入。在此我们将详细探讨这三种注入方式的使用场景。 构造器注入 如下所示在使用构造器注入时我们可以将属性字段设置为final。通过构造器注入当对AService进行实例化时BService对象必须提前初始化完成从而确保被注入的对象一定不为null。构造器注入适用于对象之间存在强依赖关系的场景但无法解决循环依赖问题因为必须互相依赖对方初始化完成从而产生冲突无法解决。 关于循环依赖问题推荐阅读Spring循环依赖是什么及其解决方式 。该文章会更深入地讲解Spring中循环依赖的原理和解决方法。 Service public class AService {private final BService bService; ​Autowired //spring framework 4.3之后可以不用在构造方法上标注Autowiredpublic AService(BService bService) {this.bService bService;} }Setter 方法注入 使用Setter方法进行注入时Spring会在执行默认的无参构造函数实例化Bean对象后调用Setter方法来注入依赖。这种方式下我们可以将”required”属性设置为false表示如果注入的Bean对象不存在Spring会直接跳过注入而不会报错。 Service public class AService {private BService bService; ​Autowired(required false)public void setbService(BService bService) {this.bService bService;} }Field注入 的确Field注入在视觉上非常简洁美观因此被广泛采用。使用Field注入时Spring容器会在对象实例化完成之后通过反射机制来设置需要注入的字段。 Service public class AService {Autowiredprivate BService bService; }为什么IDEA不推荐使用Field注入 经查阅多方资料我找到了以下几个重要原因导致Field注入可能不太被推荐使用 可能导致空指针异常如果对象创建不使用Spring容器而是直接使用无参构造方法new一个对象此时使用注入的对象可能导致空指针异常。不能使用final修饰字段缺乏final修饰会使得类的依赖可变进而可能引发一些不可预料的异常。通常情况下可以使用构造方法注入来声明强制依赖的Bean使用Setter方法注入来声明可选依赖的Bean。可能更容易违反单一职责原则这是一个关键原因。使用字段注入可能会轻易地在类中引入各种依赖导致类的职责过多但开发者往往难以察觉。相比之下使用构造方法注入当构造方法的参数过多时会提示开发者重构这个类。不利于写单元测试在单元测试中使用Field注入必须使用反射的方式来Mock依赖对象。 为了解决这些问题我们可以采用以下替代方案 当类有强依赖于其他Bean时优先使用构造方法注入。对于可选依赖可以使用Setter方法注入并在代码中处理可能出现的引用对象不存在的情况。 Spring官方的态度 Spring官方文档在依赖注入这一节中的确没有明确讨论字段注入这种方式而更加强调了构造方法注入和Setter方法注入。构造方法注入被视为首选的依赖注入方式因为它可以确保依赖的对象在创建时就被注入从而避免了一些潜在的问题比如空指针异常和类的可变性。 Setter方法注入在可选依赖的场景下也很有用但需要开发者自行处理依赖对象不存在的情况。 总的来说Spring团队强烈推荐使用构造方法注入因为它在很多方面都更加安全和可靠。同时选择适当的依赖注入方式也可以根据具体情况灵活使用。 总结 在Spring中使用依赖注入时首选构造方法注入。虽然构造方法注入无法解决循环依赖问题但当循环依赖出现时我们应该优先考虑是否代码结构设计存在问题。当然也不排除某些必须使用循环依赖的场景此时字段注入可能会派上用场。 最后我想强调的是在平时使用IDEA的过程中关注代码下划线或飘黄的提醒是很重要的。这些提示可以帮助我们学习他人总结的最佳实践经验提升自己的代码水平。 本文首发https://www.panziye.com/java/7639.html 感谢支持
http://www.hkea.cn/news/14419196/

相关文章:

  • 层流病房建设单位网站广州新闻热点事件
  • 怒江北京网站建设学校网站建设工作
  • 西安网站建设建站系统wow亚洲服有永久60级么
  • 怎么注册企业网站域名黄冈论坛网站有哪些
  • 龙岗区网站制作海南省住房和城乡建设厅网站
  • 上海省住房与城乡建设厅网站在线做网站黄
  • 网站开发三大流行语言毕节城乡建设局网站查询
  • 织梦网站如何做404网站厨师短期培训班
  • 做网站首页cdr南京房产网
  • 为什么要网站备案海外医疗网站建设
  • 杭州电子商务网站建设公司手机能建设网站忙
  • 上海网站搭建网站设计的用途
  • 美色商城 网站建设中联建设集团网站
  • 深圳罗湖网站设计公司郑州大型网站制作
  • 承德网站制作建筑人才网与厦门人才网的中级工程师证书的区别
  • linux宝塔面板做网站上海企业网站排名优化
  • 赌求网站开发wordpress怎么开发主题
  • drupal joomla wordpress 移动设备搜索引擎优化是什么
  • 做网站 域名如何要回重庆网站公司制作价格
  • 网站开发 案例详解网站是如何做的好
  • 论述网站开发建设的一般流程网站开发 8g和16g
  • 给企业做网站如何定价企业合作的响应式网站
  • 杭州外贸网站网站作业成品
  • 温州做网站老师企业计划书
  • 网络推广网站推广wordpress 幻灯片加数字
  • 如何在百度上做自己的网站设计公司推荐
  • 广州南沙区网站建设专业制作网页公司价格
  • 网站建设素材网北京市建设集团有限公司
  • 北京 网站设计 地址通州html教程 菜鸟教程
  • 济南快速网站排名东莞网站关键词优化收费