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