SpringBoot启动
2019-07-02 14:47:40 0 举报
SpringBoot启动流程简单描述
作者其他创作
大纲/内容
application.run()
本质是一个事件发布者SpringApplicationRunListeners发布ApplicationStartedEvent(委托的SimpleApplicationEventMulticaster)
ApplicationContext的refresh()方法BeanFactoryPostProcessor允许我们在容器实例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做一些额外的操作。
初始化ApplicationContextInitalizer接口的实现类(spring容器刷新之前执行的一个回调函数参考ContextLoader和FrameworkServlet支持定义一个\"contextInitializerClasses\"上下文参数或者初始化参数。)
创建当前Environmentweb:StandardServletEnvironment非web:StandardEnvironment(准备环境配置文件)
创建FailureAnalyzer,分析故障并提供相关诊断信息。
涂鸦:Banner
new SpringApplication()
初始化ApplicationContext1.Environment2.遍历调用ApplicationContextInitializer.initizlize()来对已经创建好的ApplicationContext进行进一步的处理3.SpringApplicationRunListener.contextPrepared(),通知所有的监听者:ApplicationContext已经准备完毕4.将所有的bean加载到容器中5.SpringApplicationRunListener.contextLoaded(),通知所有的监听者:ApplicationContext已经装载完毕
初始化ApplicationListener接口的实现类(spring.factories)(准备监听器)
执行所有SpringApplicationRunListener的finished()方法。
查找当前context中是否注册有CommandLineRunner和ApplicationRunner,如果有则遍历执行它们。(启动后执行的功能)
ApplicationContext属性:readerscannerbeanFactoryresourceLoadercustomClassLoaderrefreshedloggeriddisplayNameparentenvironmentbeanFactoryPostProcessorsstartupDateactiveclosedstartupShutdownMonitorlifecycleProcessormessageSourceapplicationEventMulticasterapplicationListenersearlyApplicationEventsclassLoaderprotocolResolvers
根据是否是web项目,来创建不同的ApplicationContext容器org.springframework.context.annotation.AnnotationConfigApplicationContext
ApplicationContextEvent提供了四种事件:ApplicationStartedEvent :spring boot启动开始时执行的事件ApplicationEnvironmentPreparedEvent:spring boot 对应Enviroment已经准备完毕,但此时上下文context还没有创建。ApplicationPreparedEvent:spring boot上下文context创建完成,但此时spring中的bean是没有完全加载完成的。ApplicationFailedEvent:spring boot启动异常时执行事件作者:徐森威链接:https://www.jianshu.com/p/52f4bf5dd00f来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
收藏
0 条评论
下一页