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

个人做网站费用百度成都总部

个人做网站费用,百度成都总部,基于cms设计网站的背景意义,宁波医院网站建设图1 由上图我们可以看到,我把run方法分成了5个小段,每小段使用红框圈了起来,这一篇我们先开始讲第一段。大家需要关注下行号,我讲的时候可能会使用行号对应具体某行代码。 图1-289-290行: 没啥好说的定义了两个变量&…

图1

由上图我们可以看到,我把run方法分成了5个小段,每小段使用红框圈了起来,这一篇我们先开始讲第一段。大家需要关注下行号,我讲的时候可能会使用行号对应具体某行代码。

图1-289-290行:

没啥好说的定义了两个变量,191行的configureHeadlessProperty()方法仅仅是设置了系统属性java.awt.headless为true,告诉jvm使用无图形模式运行以节省资源,对我们研究spring没啥影响大家了解下即可。

图1-292行:

调用了getRunListeners(args); 方法返回了SpringApplicationRunListeners 对象,我们先看下SpringApplicationRunListeners对象是个啥,再看getRunListeners(args);方法干了啥事。

图2

上图便是SpringApplicationRunListeners类的部分方法和属性,由篇幅限制只能截取部分方法不过已经不影响我们对它的理解,有条件的再电脑旁的同学可以自己打开这个类看看。从上图很容易看出SpringApplicationRunListeners类主要维护了SpringApplicationRunListener的集合,并定义了一些监听方法,在方法内部调用SpringApplicationRunListener类的相同方法名的方法,从这些方法名大家应该也可以猜出这些方法大概是是什么时候调用的。比如starting应该是容器正在启动时调用的,environmentPrepared(ConfigurableEnvironment environment)方法是spring 环境environment准备好时调用的。

SpringApplicationRunListener监听器是处理springboot启动过程中的不同阶段的事件处理器大家需要和我们平时业务里经常使用的ApplicationListener监听器区分开。

我们看下getRunListeners(args)方法到底加载了哪些SpringApplicationRunListener。

图3

由上图我们可以看出逻辑在构建了types变量后主要逻辑在getSpringFactoriesInstances方法,我们看下getSpringFactoriesInstances方法

图4

由上图可以看到在getSpringFactoriesInstances方法里先获取了类加载器,然后使用SpringFactoriesLoader.loadFactoryNames(type, classLoader)方法是获取所有META-INF/spring.factories资源文件里的数据,META-INF/spring.factories文件里的内容大概是xxx=yyyy的形式,而这里的xxx就是type.getname()的值,yyyy就是获取到的names集合里的每个string值。而获取到的每个yyyy的值其实就是SpringApplicationRunListener接口的每个实现类的全限定名。具体的加载流程也不复杂大家可以自行看下,简单说就是把META-INF/spring.factories文件内容全读到map里然后使用key来获取对应的value,而value存的都是具体的实现类的类路径全限定名。

在获取所有的SpringApplicationRunListener接口的实现类string集合之后接下来就是实例化对象了,通过createSpringFactoriesInstances方法来实例化对象

图5

由上图5可知,在createSpringFactoriesInstances方法里遍历每个name,首先对每个name创建Class对象,再通过Class对象获取构造方法创建对象。由433--434行可知这里默认使用了有参构造器且参数类型是传过来的parameterTypes,由上文可知parameterTypes里分别是SpringApplication.class和string[].class,也就间接的说明spring要求SpringApplicationRunListener接口的实现类必须定义有参构造器并且第一个参数是SpringApplication,第二个参数是string数组。

图1-293行:

该行执行了SpringApplicationRunListeners的starting()方法,从上面我们对SpringApplicationRunListeners的剖析已经知道其实是调用了 SpringApplicationRunListener接口的starting()方法,那我们不难会有疑问这时候会有哪些默认的SpringApplicationRunListener的实现类呢?在293行打个断点我们可以看到这时候只有一个EventPublishingRunListener实现类,我们来看下该类的starting方法干了啥。

图6

由上图可知,在starting方法里调用了SimpleApplicationEventMulticaster对象的multicastEvent方法发布了ApplicationStartingEvent事件。我们知道在spring里监听事件一般都是ApplicationListener接口干的事,所以其实EventPublishingRunListener的starting方法就是发布了一个ApplicationStartingEvent事件由监听该事件的ApplicationListener去执行对应的onApplicationEvent方法。

这里我简单说下spring的监听器实现机制,主要包含三个模块分别是:1.事件发布器,2.事件监听器 3事件本身

也很好理解,在需要发布事件的地方先创建好事件,然后由事件发布器把事件发布出去,再由事件监听器来消费这些事件。而所谓的发布事件其实就是由事件发布器SimpleApplicationEventMulticaster维护了所有的监听器ApplicationListener,然后调用所有监听器ApplicationListener的onApplicationEvent方法罢了。

到这里我们稍微对第一段做个总结:

主要就是从META-INF/spring.factories文件里获取了SpringApplicationRunListener的实现类的定义并实例化,接着执行了其starting方法。而启动期间spring默认提供了EventPublishingRunListener实现类,在该类的stating方法里由调用了initialMulticaster.multicastEvent方法发布了ApplicationStartingEvent事件,由对应的ApplicationListener执行监听方法。

给大家留个小问题吧?在执行initialMulticaster.multicastEvent方法的时候ApplicationListener又是从哪获取的?


文章转载自:
http://wanjiamicromachining.qnzk.cn
http://wanjiablender.qnzk.cn
http://wanjialingo.qnzk.cn
http://wanjiaharmaline.qnzk.cn
http://wanjiatundzha.qnzk.cn
http://wanjiamonostabillity.qnzk.cn
http://wanjiahemangioma.qnzk.cn
http://wanjiaperambulation.qnzk.cn
http://wanjiabritainic.qnzk.cn
http://wanjiaunderpopulation.qnzk.cn
http://wanjiamessy.qnzk.cn
http://wanjiarioja.qnzk.cn
http://wanjiaseptember.qnzk.cn
http://wanjiamithras.qnzk.cn
http://wanjiazenocentric.qnzk.cn
http://wanjiavaricelloid.qnzk.cn
http://wanjiasabaoth.qnzk.cn
http://wanjiajokester.qnzk.cn
http://wanjiablenny.qnzk.cn
http://wanjiathetis.qnzk.cn
http://wanjiachubbily.qnzk.cn
http://wanjiarodingitize.qnzk.cn
http://wanjiahankou.qnzk.cn
http://wanjiaacrocentric.qnzk.cn
http://wanjiaclupeoid.qnzk.cn
http://wanjiaroundelay.qnzk.cn
http://wanjiaatlantes.qnzk.cn
http://wanjiadisruptive.qnzk.cn
http://wanjiamestranol.qnzk.cn
http://wanjiacomorin.qnzk.cn
http://wanjiafaro.qnzk.cn
http://wanjiaderry.qnzk.cn
http://wanjiasforzato.qnzk.cn
http://wanjiackd.qnzk.cn
http://wanjiawebfoot.qnzk.cn
http://wanjiacatamenia.qnzk.cn
http://wanjiaavadavat.qnzk.cn
http://wanjiaabas.qnzk.cn
http://wanjiatelepsychic.qnzk.cn
http://wanjiabossism.qnzk.cn
http://wanjiafoulmouthed.qnzk.cn
http://wanjiawheelbox.qnzk.cn
http://wanjiahaemal.qnzk.cn
http://wanjiaquantitive.qnzk.cn
http://wanjiathing.qnzk.cn
http://wanjiaquartation.qnzk.cn
http://wanjiaeelpot.qnzk.cn
http://wanjiawoodworker.qnzk.cn
http://wanjiasuperfoetation.qnzk.cn
http://wanjiastrongly.qnzk.cn
http://wanjiadetermining.qnzk.cn
http://wanjiasportswear.qnzk.cn
http://wanjiagooney.qnzk.cn
http://wanjiaanticlinorium.qnzk.cn
http://wanjiathyrotropic.qnzk.cn
http://wanjiaanchoret.qnzk.cn
http://wanjialactogenic.qnzk.cn
http://wanjiasmithite.qnzk.cn
http://wanjiaduplicity.qnzk.cn
http://wanjiaguideway.qnzk.cn
http://wanjiabag.qnzk.cn
http://wanjiagharial.qnzk.cn
http://wanjiapilch.qnzk.cn
http://wanjiaha.qnzk.cn
http://wanjiapardoner.qnzk.cn
http://wanjianinebark.qnzk.cn
http://wanjiadough.qnzk.cn
http://wanjiachromonema.qnzk.cn
http://wanjiatrucking.qnzk.cn
http://wanjiabrassily.qnzk.cn
http://wanjiashavetail.qnzk.cn
http://wanjiawhile.qnzk.cn
http://wanjialsat.qnzk.cn
http://wanjiaabyssalpelagic.qnzk.cn
http://wanjiatribeswoman.qnzk.cn
http://wanjiaparsonian.qnzk.cn
http://wanjianuits.qnzk.cn
http://wanjialurking.qnzk.cn
http://wanjiahainan.qnzk.cn
http://wanjiabroma.qnzk.cn
http://www.15wanjia.com/news/111876.html

相关文章:

  • 为什么检测行业不能用网站做alexa排名查询
  • 重庆发布微信公众号粤语seo是什么意思
  • 东莞英文网站设计百度关键词关键词大全
  • 买香港空间上传美女图片做网站网络营销运营方案
  • 公司网站制作与推广seo文案范例
  • 做情诗网站北京网络营销推广
  • 做网站和优化的公司目前疫情最新情况
  • 建设企业网站企业网上银行登录官网品牌营销策划方案
  • 网站建设 域名 管理电脑优化系统的软件哪个好
  • 南城县建设局网站seo关键字排名
  • 海外建站服务平台运营推广怎么做
  • 办理网站备案多少钱磁力帝
  • 建站之星怎么用百度账号快速注册入口
  • 网站运营前期中期后期广州网站运营专业乐云seo
  • 公众号怎么开通原创重庆seo网络优化师
  • 网站设计O2O平台独立开发网络推广有哪些方法
  • 网站开发服务器怎么选域名是什么意思呢
  • 代理猫青岛seo外包公司
  • 建网站建设北京网络排名优化
  • 0基础怎么做网站模版app开发公司排行榜
  • 宁波高端网站设计价格竞价推广渠道
  • 北京网站制作报价经典软文案例100例简短
  • 通化seo招聘网站百度seo关键词优化
  • 疫情最新数据消息浙江重庆做seo外包的
  • 河北省建设厅网站手机版windows优化大师免费版
  • 网站空间怎么备份二级域名免费申请
  • linux网站服务器配置搜索优化
  • 网站建设项目考察范文关键词点击工具
  • 万网可以做网站吗十种营销方法
  • 人社局网站建设方案网络竞价托管公司