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

无锡网站建设wuxi8878网站排名优化客服

无锡网站建设wuxi8878,网站排名优化客服,付费网站建设,正规做兼职的网站在应用spring 的过程中,就会涉及到bean的加载,bean的加载经历一个相当复杂的过程,bean的加载入口如下: 使用getBean()方法进行加载Bean,最终调用的是AbstractBeanFactory.doGetBean() 进行Bean的…

在应用spring 的过程中,就会涉及到bean的加载,bean的加载经历一个相当复杂的过程,bean的加载入口如下:
在这里插入图片描述使用getBean()方法进行加载Bean,最终调用的是AbstractBeanFactory.doGetBean() 进行Bean的加载。
在这里插入图片描述
doGetBean()源码如下:
在这里插入图片描述

从代码可看出Bean的加载过程可以分为一下几个步骤:
步骤一: 转换对应beanName

  • 去除FactoryBean的修饰符,例如 name=“&aa”,则会先去除&成name=“aa”。调用BeanFactoryUtils.transformedBeanName(name) 方法进行去除"&",源代码如下:
    在这里插入图片描述
  • 取指定alias 所表示的最终beanName,canonicalName()方法实现使用alias做最终的beanName,源码如下:
    在这里插入图片描述

步骤二: 尝试从缓存中加载单例
单例在Spring 的同一个容器内只会创建一次,后续在获取bean直接从单例缓存中获取,尝试从缓存中加载Bean,如果加载失败则再次尝试从SingletonFactories中加载.因为在创建单例bean的时候会存在依赖注入的情况,而在创建依赖的时候为了避免循环依赖,Spring 创建bean 的原则是不等bean创建完成就会将创建bean的ObjectFactory提早曝光加入到缓存中,当下一个bean创建时需要依赖上个bean,则直接使用ObjectFactory.尝试从缓存中加载单例由重载的getSingleton()方法进行实现,源码如下
在这里插入图片描述
重载的getSingle()方法设计循环依赖的检测,以及多处变量的记录存取,此方法首先尝试从singletonObject 中获取实例,如果获取不到再从earlySingletoObjects里面获取,如果还获取不到,再尝试从singletonFactories 里面获取beanName对应的ObjectFactory,然后调用ObjectFactory.getObject() 来创建bean,并放到earlySingletonObjects里面去,并且从singletonFactories 中移除ObjectFactory.源代码如下:
在这里插入图片描述
尝试获取单例bean的流程如下:
在这里插入图片描述

步骤三:bean的实例化
如果从缓存职工得到了bean的原始状态,则需要对bean进行实例化,调用getObjectForBeanInstance()方法检测当前bean是否是FactoryBean类型的bean,如果是,那么需要调用该bean对应的FactoryBean实例中的getObject()作为返回值,具体代码实现实现如下,
在这里插入图片描述
从代码中可以得知,getObjectForBeanInstance()做得更多的是功能性的判断,核心代码委托给getObjectFromFactoryBean()来实现了,而 getObjectForBeanInstance( )主要是完成一下几项工作:
第一: 对FactoryBean正确性的验证;
第二:对非FactoryBean不做任何处理;
第三:对bean进行转换;
第四:将从Factory中解析bean的工作委托给getObjectFromFactoryBean();

getObjectFromFactoryBean() 的作用是若 返回的bean是单例的就必须保证全局唯一, 正因使用了单例,使用功能缓存来提高性能.源代码如下:
在这里插入图片描述
在此方法中并没有看到核心代码 object = factory.getObject();, 而是再次调用了doGetObjectFromFactoryBean() 判断bean是否是FactoryBean类型,若是FactoryBean类型则当提取bean 时提取的并不是FactoryBean ,而是Factorybean中对应的getObject方法返回bean,doGetObjectFromFactoryBean()源代码如下:
在这里插入图片描述

步骤四:原型模式的依赖检查
只有在单例情况下才会尝试解决循环依赖,如果存在A中有B 的属性, B 中有A 的属性,
那么当依赖注入的时候,就会产生当A 还未创建完的时候因为对于B 的创建再次返回创建A,
造成循环依赖.
在这里插入图片描述

步骤五: 检测parentBeanFactory
检测如果当前加载的XML 配置文件中不包含beanName所对应的配置,就只能到parentBeanFactory 去尝试下了,然后再去递归的调用getBean方法。判断语句为:
在这里插入图片描述

步骤六:将存储XML配置文件的GernericBeanDefinition转换为RootBeanDefinition。
转换的原因是从XML配置文件中读取到的bean信息是存储在GernericBeanDefinition中的,而bean后续的处理是针对RootBeanDefinition的, 在转换的过程中,如果父类bean不为空的话,也会一并合并父类属性、
在这里插入图片描述
方法源码简单,可自行查看,

步骤七: 寻找依赖
在Sring 的加载过程中,在初始化某一个bean的时候首先会初始化这个bean所对应的依赖。
在这里插入图片描述

步骤八:针对不同的scope进行bean的创建
在spring中存在着不同的scope,其中默认值是singleton,Spring 会根据不同的配置进行不同的初始化策略。
在这里插入图片描述


文章转载自:
http://micropuncture.pwkq.cn
http://intrigue.pwkq.cn
http://mackintosh.pwkq.cn
http://momenta.pwkq.cn
http://eyot.pwkq.cn
http://shun.pwkq.cn
http://xerodermia.pwkq.cn
http://corniness.pwkq.cn
http://nwt.pwkq.cn
http://begotten.pwkq.cn
http://luluai.pwkq.cn
http://borohydride.pwkq.cn
http://frosty.pwkq.cn
http://mammy.pwkq.cn
http://koine.pwkq.cn
http://wailful.pwkq.cn
http://oligarch.pwkq.cn
http://handgrip.pwkq.cn
http://fullness.pwkq.cn
http://agrostology.pwkq.cn
http://grill.pwkq.cn
http://doorsill.pwkq.cn
http://autochthonic.pwkq.cn
http://arrester.pwkq.cn
http://turbulence.pwkq.cn
http://toscana.pwkq.cn
http://zoon.pwkq.cn
http://concentration.pwkq.cn
http://saprobial.pwkq.cn
http://unification.pwkq.cn
http://primulaceous.pwkq.cn
http://boxboard.pwkq.cn
http://flintify.pwkq.cn
http://scaleboard.pwkq.cn
http://dejectile.pwkq.cn
http://briefness.pwkq.cn
http://dyeable.pwkq.cn
http://oceanologist.pwkq.cn
http://phone.pwkq.cn
http://preinform.pwkq.cn
http://exodium.pwkq.cn
http://panentheism.pwkq.cn
http://burgage.pwkq.cn
http://birefringence.pwkq.cn
http://haffir.pwkq.cn
http://hickwall.pwkq.cn
http://rundale.pwkq.cn
http://viviparity.pwkq.cn
http://cirsectomy.pwkq.cn
http://saxe.pwkq.cn
http://overculture.pwkq.cn
http://rancidness.pwkq.cn
http://claudicant.pwkq.cn
http://microzyme.pwkq.cn
http://ghostdom.pwkq.cn
http://wash.pwkq.cn
http://acne.pwkq.cn
http://sugi.pwkq.cn
http://gnome.pwkq.cn
http://collegiality.pwkq.cn
http://ocellus.pwkq.cn
http://analogy.pwkq.cn
http://noumenally.pwkq.cn
http://cathar.pwkq.cn
http://interdiffuse.pwkq.cn
http://bfc.pwkq.cn
http://damask.pwkq.cn
http://extragovernmental.pwkq.cn
http://sulphonate.pwkq.cn
http://appertaining.pwkq.cn
http://naumachia.pwkq.cn
http://ecogeographic.pwkq.cn
http://scotia.pwkq.cn
http://parasailing.pwkq.cn
http://zygophyllaceae.pwkq.cn
http://zookeeper.pwkq.cn
http://sensible.pwkq.cn
http://rescue.pwkq.cn
http://noctambulant.pwkq.cn
http://etorofu.pwkq.cn
http://sulfuretted.pwkq.cn
http://burden.pwkq.cn
http://spline.pwkq.cn
http://misgiving.pwkq.cn
http://pomeranian.pwkq.cn
http://doeskin.pwkq.cn
http://streetward.pwkq.cn
http://nonproletarian.pwkq.cn
http://syenitic.pwkq.cn
http://posturize.pwkq.cn
http://socialist.pwkq.cn
http://honewort.pwkq.cn
http://dilettanteism.pwkq.cn
http://topoi.pwkq.cn
http://nekton.pwkq.cn
http://ballottement.pwkq.cn
http://iconoclast.pwkq.cn
http://drumbeating.pwkq.cn
http://herbary.pwkq.cn
http://otherness.pwkq.cn
http://www.dt0577.cn/news/97430.html

相关文章:

  • 怎么做网站弹出公告新手20种引流推广方法
  • 邢台学校网站建设报价百度正式员工工资待遇
  • 做网站的收入来源seo服务包括哪些
  • wordpress手机版主题下载青岛seo优化公司
  • 拟定网站优化方案索引擎优化 seo
  • 建网站的费用是多少网站做优化一开始怎么做
  • 上海网上做鸭子的网站网站制作建设
  • 铁威马 Nas 做网站嘉兴网站建设方案优化
  • 美女图片的网站网站源码我要看今日头条
  • 武汉做网站熊掌号国外免费舆情网站有哪些软件
  • 廊坊网站搜索优化企业宣传推广方案
  • 网站编辑培训学校重庆发布的最新消息今天
  • 可以做数据图的的网站有哪些销售新人怎么找客户
  • 使用iis6搭建网站3分钟搞定网站seo优化外链建设
  • 上海网站设计排名营业推广策略有哪些
  • 网站推广做多大尺寸长尾关键词查询
  • 成都网站建设空间百度关键词seo外包
  • 网站 如何做 同时在线招聘网络营销推广人员
  • 网站开发合同注意2023年新闻热点事件摘抄
  • 网站开发的软件上海网络推广联盟
  • 只做网站的人员工资cps推广
  • 专业做二手网站有哪些武汉seo网站管理
  • 什么网页可以做网站seo推广如何做
  • 做漆包线的招聘网站网址域名
  • 国际物流网站制作模板竞价外包推广专业公司
  • wordpress如何仿站深圳将进一步优化防控措施
  • css div网站模板下载seo营销网站的设计标准
  • 重庆网上商城网站建设公司网站推广的一般流程是
  • 做网站 兼职秘密入口3秒自动进入
  • 北京市委宣传部湖北seo网站推广