打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java开发框架Spring源码分析

我们平时使用springboot项目,可能就是继承spring-boot-starter-parent,然后引入一个spring-boot-stater-web依赖,然后创建一个继承于SpringBootServletInitializer启动类继续,然后添上@SpringBootApplication注解。一个初略的springboot项目就搭建成功了。

但是我们在使用的过程中,应该也会好奇它java培训是怎么运作的,今天我们就来探究下,springboot项目在tomcat中的启动顺序。

在servlet 2.5之前我们都是使用的web.xml配置一个servlet-context,联合spring的时候,我们要手动注册监听器,还要注册mvcservlet,但是servlet 3.0之后。我们的项目中不需要web.xml也可以直接运行,因为3.0支持去配置化。

spring中的启动类HandleType标注的处理类为org.springframework.web.WebApplicationInitizlizer,所以我们编写启动类的时候,如果想要能在servlet环境运行的化,就需要继承SpringBootServletInitializer,这样,我们的项目就会随着tomcat启动而开始运行了。

下面我们来研究下SpringBootServletInitializer的启动过程。

内部其实就一个createRootApplicationContext方法,这个启动过程,其实也是一个创建SpringApplication的过程。

期间Spring采用的建造者模式使复杂的创建过程,变成一个一个简单对象的创建过程,这样看上去代码逻辑更加直观。

SpringApplicationBuilder创建SpringApplication过程

第一步:创建一个初始状态的SpringApplication对象,SpringApplication创建的时候,先去判断容器是否是Servlet环境,且会去META-INF/spring.factories文件里面加载所有的ApplicationContextInitializer.class以及ApplicationListener.class信息并创建

第二步:为容器创建environment,我们之间讲述的那个能够收集系统环境变量的对象

第三步:为SpringApplication创建ServletContextApplicationContextInitializer,用来把SpringApplication绑定到ServletContext中。

第四步:确定SpringApplication中的ApplicationContext实现类,默认为注解驱动的AnnotationConfigEmbeddedWebApplicationContext.class的实现。

第五步:回调启动类中的configure方法,我们可以在这个方法里面自定义我们自己的构builder处理逻辑,比如设置启动数据源source。

第六步:完成装配,返回SpringApplication对象。

ApplicationContext的启动过程

其实只要英语好点的人,都能直接读出这其中的大抵的步骤,所以这个提醒我们,在自己平时业务中编写代码的时候,取一个好的方法名字的重要性。

springApplication启动的大致步骤如下。

图片中有些部分有所省略,但是无论从SpringApplication的创建,还是ApplicationContext的运行阶段,都有大量的回调接口,设计模式的开闭原则体现。

我们用到现在其实体验最好的就是这个去配置化以及注解和资源文件配置,后面我们再重点研究下spring的注解加载是怎么运作的~。  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
springboot启动报错,Error starting ApplicationContext. To display the conditions report re-run your appli
同个tomcat部署2个几乎同样的应用但只有一个成功
SpringBoot启动流程总结
头秃系列,二十三张图带你从源码分析Spring Boot 启动流程~
头秃了,二十三张图带你从源码了解SpringBoot启动流程
在spring web应用中获得ApplicationContext的引用(2014-06-27)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服