通过阅读springboot源码看看springboot是怎么加载tomcat的

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服务器
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值