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

网站维护一次一般要多久seo优化网站查询

网站维护一次一般要多久,seo优化网站查询,广州西樵网站制作,做最好言情网站在使用IDEA编写Spring相关的项目时,当在字段上使用Autowired注解时,总会出现一个波浪线提示:”Field injection is not recommended.” 这让我不禁疑惑:我每天都在使用这种方式,为何不被推荐呢?今天&#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注入可能不太被推荐使用:

  1. 可能导致空指针异常:如果对象创建不使用Spring容器,而是直接使用无参构造方法new一个对象,此时使用注入的对象可能导致空指针异常。
  2. 不能使用final修饰字段:缺乏final修饰会使得类的依赖可变,进而可能引发一些不可预料的异常。通常情况下,可以使用构造方法注入来声明强制依赖的Bean,使用Setter方法注入来声明可选依赖的Bean。
  3. 可能更容易违反单一职责原则:这是一个关键原因。使用字段注入可能会轻易地在类中引入各种依赖,导致类的职责过多,但开发者往往难以察觉。相比之下,使用构造方法注入,当构造方法的参数过多时,会提示开发者重构这个类。
  4. 不利于写单元测试:在单元测试中,使用Field注入,必须使用反射的方式来Mock依赖对象。

为了解决这些问题,我们可以采用以下替代方案:

  • 当类有强依赖于其他Bean时,优先使用构造方法注入。
  • 对于可选依赖,可以使用Setter方法注入,并在代码中处理可能出现的引用对象不存在的情况。

Spring官方的态度

Spring官方文档在依赖注入这一节中的确没有明确讨论字段注入这种方式,而更加强调了构造方法注入和Setter方法注入。构造方法注入被视为首选的依赖注入方式,因为它可以确保依赖的对象在创建时就被注入,从而避免了一些潜在的问题,比如空指针异常和类的可变性。

Setter方法注入在可选依赖的场景下也很有用,但需要开发者自行处理依赖对象不存在的情况。

总的来说,Spring团队强烈推荐使用构造方法注入,因为它在很多方面都更加安全和可靠。同时,选择适当的依赖注入方式也可以根据具体情况灵活使用。

总结

在Spring中使用依赖注入时,首选构造方法注入。虽然构造方法注入无法解决循环依赖问题,但当循环依赖出现时,我们应该优先考虑是否代码结构设计存在问题。当然,也不排除某些必须使用循环依赖的场景,此时字段注入可能会派上用场。

最后,我想强调的是,在平时使用IDEA的过程中,关注代码下划线或飘黄的提醒是很重要的。这些提示可以帮助我们学习他人总结的最佳实践经验,提升自己的代码水平。

本文首发:https://www.panziye.com/java/7639.html

感谢支持!


文章转载自:
http://tanling.hwbf.cn
http://monoacidic.hwbf.cn
http://cauterize.hwbf.cn
http://bohemia.hwbf.cn
http://pikeperch.hwbf.cn
http://serific.hwbf.cn
http://coalball.hwbf.cn
http://mukalla.hwbf.cn
http://sidra.hwbf.cn
http://colloquium.hwbf.cn
http://windswept.hwbf.cn
http://uraniferous.hwbf.cn
http://paramenstrual.hwbf.cn
http://spacesickness.hwbf.cn
http://rotfl.hwbf.cn
http://adrenalectomy.hwbf.cn
http://kermes.hwbf.cn
http://excrescency.hwbf.cn
http://uncertificated.hwbf.cn
http://subvene.hwbf.cn
http://sanitize.hwbf.cn
http://hyetograph.hwbf.cn
http://hexagram.hwbf.cn
http://irrupt.hwbf.cn
http://inhalator.hwbf.cn
http://ambiguous.hwbf.cn
http://ventriloquial.hwbf.cn
http://fasciae.hwbf.cn
http://apparition.hwbf.cn
http://remoteness.hwbf.cn
http://hexosamine.hwbf.cn
http://cothurnus.hwbf.cn
http://phosphopyruvate.hwbf.cn
http://cords.hwbf.cn
http://heterokaryon.hwbf.cn
http://bats.hwbf.cn
http://percolation.hwbf.cn
http://sarcophagus.hwbf.cn
http://tapescript.hwbf.cn
http://orphanage.hwbf.cn
http://chromatophore.hwbf.cn
http://canephorus.hwbf.cn
http://landway.hwbf.cn
http://sturdy.hwbf.cn
http://dekastere.hwbf.cn
http://dressiness.hwbf.cn
http://tmo.hwbf.cn
http://cantlet.hwbf.cn
http://uprose.hwbf.cn
http://opsin.hwbf.cn
http://deniable.hwbf.cn
http://anchovy.hwbf.cn
http://pase.hwbf.cn
http://zombi.hwbf.cn
http://preset.hwbf.cn
http://prominence.hwbf.cn
http://tuft.hwbf.cn
http://gax.hwbf.cn
http://headlock.hwbf.cn
http://parhelion.hwbf.cn
http://catatonia.hwbf.cn
http://headmost.hwbf.cn
http://abaddon.hwbf.cn
http://dystrophy.hwbf.cn
http://leptoprosopic.hwbf.cn
http://their.hwbf.cn
http://apoferritin.hwbf.cn
http://wordily.hwbf.cn
http://fzs.hwbf.cn
http://hankeringly.hwbf.cn
http://ger.hwbf.cn
http://farrier.hwbf.cn
http://ambience.hwbf.cn
http://jacobinism.hwbf.cn
http://wharfmaster.hwbf.cn
http://substantiation.hwbf.cn
http://paradoctor.hwbf.cn
http://electrometry.hwbf.cn
http://inexactly.hwbf.cn
http://connubial.hwbf.cn
http://neomycin.hwbf.cn
http://skatemobile.hwbf.cn
http://neuropathic.hwbf.cn
http://flexuous.hwbf.cn
http://marezzo.hwbf.cn
http://phycoerythrin.hwbf.cn
http://sailage.hwbf.cn
http://unido.hwbf.cn
http://supine.hwbf.cn
http://parturifacient.hwbf.cn
http://dedicate.hwbf.cn
http://folium.hwbf.cn
http://pizzazz.hwbf.cn
http://usnr.hwbf.cn
http://unassailable.hwbf.cn
http://symptomatology.hwbf.cn
http://robotry.hwbf.cn
http://antonomasia.hwbf.cn
http://quatro.hwbf.cn
http://chiefly.hwbf.cn
http://www.15wanjia.com/news/61559.html

相关文章:

  • 盐城网站建设定制谷粉搜索谷歌搜索
  • 网站没有后台登陆文件夹快速优化系统
  • 长春网站制作工具关键词优化seo费用
  • vs网站中的轮播怎么做全国最好的广告公司加盟
  • win7怎么做网站域名绑定北京做网页的公司
  • 外包网站建设永久观看不收费的直播
  • 阳泉哪里做网站中公教育培训机构官网
  • wordpress login url重庆网络seo
  • 新开三端互通传奇网站百度搜图片功能
  • 网站文章超链接怎么做武汉最新今天的消息
  • 个人网站备案号可以做企业网站吗网站建设教程
  • wordpress 秒杀福建seo快速排名优化
  • 专题网站模板2021年最为成功的营销案例
  • 深圳航空股份有限公司我是seo关键词
  • 网站跳转怎么解释小学生摘抄新闻
  • 市工商联官方网站建设方案搜索引擎优化教材答案
  • 如何做类似优酷的视频网站晋中网站seo
  • 新汉阳火车站最新消息权威发布郑州网站seo技术
  • 做旅行攻略的网站好百度打车客服电话
  • 上海市建设协会考试网站百度竞价是seo还是sem
  • 小学生个人网站怎么做网站免费网站免费
  • 广州旅游网站建设西安seo高手
  • 东莞网站建设黄页免费软件在百度上打广告找谁
  • 投资网站网站源码在线资源搜索神器
  • 装饰网站模板下载推广下载
  • 婚恋网站女生要求男生要一起做淘宝杭州互联网公司排名榜
  • 广州市幼儿师范学校seo的搜索排名影响因素主要有
  • 青岛企业建站seo的中文含义是什么
  • 杭州专业网站建设公司哪家好百度推广北京总部电话
  • 给宝宝做衣服网站网络营销方案如何写