02. Spring Boot Web 集成原理
2022-03-20 13:59:44 0 举报
AI智能生成
Spring Boot Web 启动原理
作者其他创作
大纲/内容
ServletWebServerFactoryAutoConfiguration<br>Spring Boot 提供的自动装配类<br>通过 Imort 导入这 4 个组件<br>
ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class<br>Web 服务器工厂定制化器的后置增强处理器
ServletWebServerFactoryConfiguration.EmbeddedTomcat.class
TomcatServletWebServerFactory<br>如果当前环境是 Tomcat,给容器导入组件
ServletWebServerFactoryConfiguration.EmbeddedJetty.class
JettyServletWebServerFactory<br>如果当前环境是 Jetty,给容器中导入这个组件
ServletWebServerFactoryConfiguration.EmbeddedUndertow.class
UndertowServletWebServerFactory<br>如果当前环境是 Undertow,给容器中导入这个组件<br>
DispatcherServletAutoConfiguration<br>Spring Boot 提供的自动装配类<br>
DispatcherServletConfiguration<br>向容器中导入【DispatcherServlet】组件<br>
DispatcherServletRegistrationConfiguration<br>向容器中导入【DispatcherServletRegistrationBean】组件<br>它主要是保存【DispatcherServlet】组件信息,同时实现了【ServletContextInitializer】接口
AnnotationConfigServletWebServerApplicationContext.refresh()<br>它是 Spring Boot 应用创建的 IOC 容器<br>启动时会调用 refresh() 方法进行刷新
onRefresh()<br>在这里会回调子类的 onRefresh() 方法<br>
createWebServer()<br>创建 web 容器
getSelfInitializer()<br>从容器中获取所有的【ServletContextInitializer】
factory.getWebServer()<br>从容器中查找 ServletWebServerFactory<br>然后创建真正的 Tomcat 容器<br>
customizeConnector(connector)<br>定制化协议和连接器
tomcatProtocolHandlerCustomizers<br>定制化协议
tomcatConnectorCustomizers<br>定制化连接器
prepareContext()<br>初始化上下文环境
configureContext()<br>配置 context 上下文
TomcatStarter(initializers)<br>初始化一个 TomcatStarter,并且将 initializers 保存在 TomcatStarter<br>同时把 TomcatStarter 保存在 context 上下文中
tomcatContextCustomizers<br>定制化 context 上下文<br>
getTomcatWebServer()<br>初始化【TomcatWebServer】服务器
initialize()<br>调用初始化方法
this.tomcat.start()<br>启动 Tomcat<br>
ServletContainerInitializer.onStartup()<br>Tomcat 在启动时会回调这个接口的方法
TomcatStarter.onStartup()<br>回调所有 initializers 的 onStartup() 方法<br>
selfInitialize()<br>调用自身的初始化方法
getServletContextInitializerBeans()<br>从容器中获取所有的【RegistrationBean】类型
beans.onStartup()<br>挨个调用 onStartup() 方法
register(description, servletContext)<br>实际上就是把组件注册到 Tomcat <br>容器的 servletContext 上下文中<br>
0 条评论
下一页