1.springboot项目启动类找到@SpringBootApplication注解点进去
2.可以看到他上面有个@EnableAutoConfiguration启用自动配置,点进去
3.可以看到导入了一个AutoConfigurationImportSelector自动配置导入选择器,继续点进去
4.他会去找一个META-INF/spring.factories配置文件里面有很多配置信息
5.去导入的依赖里面找到这个文件打开
6.ServletWebServerFactoryAutoConfiguration找到这个点进去
6.1可以看到有一个tomcatServletWebServerFactoryCustomizer方法传过来的参数ServerProperties一些端口啊地址之类的信息,返回了一个TomcatServletWebServerFactoryCustomizer点进去看看
6.2TomcatServletWebServerFactoryCustomizer这个类实现了一个WebServerFactoryCustomizer接口那必然实现了customize这个方法
6.3这个方法就是把tomcat初始化了
7.返回去可以看到 导入了这么一个玩意儿EmbeddedTomcat继续点进去看看是啥
8.在这里补充一个知识点哈
@ConditionalOnClass({ Servlet.class, Tomcat.class, UpgradeProtocol.class })
:这注解的意思是后面三个实例存在才会把EmbeddedTomcat注册到IOC容器
@ConditionalOnMissingBean(value = ServletWebServerFactory.class, search = SearchStrategy.CURRENT):
这个注解的意思是如果IOC容器里没有EmbeddedTomcat这个bean 那么就会把EmbeddedTomcat加载到容器里
回归正题:
TomcatServletWebServerFactory点进去
9.可以看到有个getWebServer方法 new了个Tomcat对象并且设置了一些属性值(其实就是初始化了tomcat但是这个地方并没有启动)
然后返回了个getTomcatWebServer点进去看看
10.看返回值 创建了个TomcatWebServer并且把初始化的tomcat传过来了还有看看端口号是不是>=0;继续TomcatWebServer点进去
11.创建了一个TomcatWebServer实例 可以看到两个参数 一个是初始化的tomcat
一个是是否自动启动;还调用了个initialize()方法 点进去
12.看看终于看到了启动tomcat服务器
通过阅读springboot源码看看springboot是怎么加载tomcat的
最新推荐文章于 2024-07-21 22:35:09 发布