栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Spring Boot 如何初始化内置Tomcat容器的?】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Spring Boot 如何初始化内置Tomcat容器的?】

Spring Boot 如何初始化内置Tomcat容器的?
  • 1. spring.factories文件
  • 2. 获取ServletWebServerFactory
  • 3. 总结

1. spring.factories文件

首先当Springboot启动的时候SpringApplication对象,在这里面会加载所有的spring.factories文件,所有配置类的命名空间保存起来,等到需要使用的时候进行实例化。其中这里面就包括配置Tomcat的配置类。ServletWebServerFactoryAutoConfiguration

2. 获取ServletWebServerFactory

当Springboot判断你要启动web项目是,会创建一个ServletWebServerApplicationContext作为Spring的上下文,在这个对面的refreh()方法里面会获取ServletWebServerFactory用来创建一个web容器。

这里会通过getWebServerFactory()去创建一个工厂,然后通过工厂去获取一个web容器

到这里,我们可以发现springboot是从beanFactory里面获取一个ServletWebServerFactory类型的bean对象,那么这个bean对象是怎么被加载到Spring的ioc容器中的呢?其实源头就是我们上面说的spring.factories文件中。

在这个jar包里面的spring.factories文件里面有一个AutoConfig类,在这里面有ServletWebServerFactory类型Bean的线索

我们可以看到这个AutoConfiguation类里面@import了很多东西,我们就点进这个EmbeddedTomcat.class

在这里面就发现了一个关键Bean,TomcatServletWebServerFactory,这个Bean在创建web容器之前就已经注入到Spring Ioc容器中,所以可以直接获取然后用来创建Tomcat容器。

现在我们已经知道ServletWebServerFactory是怎么被创建出来的了接着我们回到之前源码里继续看,


到这里,已经完全清晰了,直接去构造一个Tomcat对象,然后对其进行配置,最后包装一下返回,放入Spring上下文中。

3. 总结

至此我们已经把SpringBoot内置Tomcat的创建流程串起来了,我们其实可以发现Springboot的原理,以及第三方框架集成Springboot的原理。其实就是将需要配置的类配置到spring.factores文件中,等某个时机SpringBoot将其加载出来,然后通过调用被@Bean注解标注的方法去实例化Bean对象,然后将其放入SpringApplicationContext或者ioc容器(其实就是BeanFactory)中,等所有bean加载成功之后依赖于Spring框架对他们进行依赖注入。最后完成Spirng容器的启动、Web容器的启动、第三方框架的初始化。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号