springboot内嵌容器原理
2020-10-29 10:17:19 0 举报
springboot内嵌容器原理
作者其他创作
大纲/内容
JettyWebServerFactoryCustomizerConfiguration
对beanFactory的bean进行后置处理
TomcatServletWebServerFactoryCustomizer这个定制器是对tomcat进行一些额外的补充,比如重定向的属性
条件装配,当是tomcat容器时加载
ServletWebServerFactoryCustomizer
NettyWebServerFactoryCustomizerConfiguration
UndertowWebServerFactoryCustomizerConfiguration
spring的web项目: 是由tomcat启动来带动spring容器,servlet交由tomcat管理springboot的web项目: 是由spring容器启动带动tomcat容器,同时tomcat的bean和servlet也交由spring管理
springboot的内嵌容器的自动配置类:在自动配置包下的web的embedded(内嵌)容器中org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration
@Bean
每种都有对应的WebServerFactoryCustomizer服务定制器,通过customize(ConfigurableTomcatWebServerFactory factory)方法进行属性设置
通过条件装配注解来决定使用哪种内嵌容器。比如想使用netty,就通过移除默认的tomcat依赖,再引入netty依赖,就会将netty的HttpServer类引入进来,这样就可以满足条件装配进行装配
@Import
内嵌容器原理
三种内嵌容器的配置类
ServletWebServerFactoryConfiguration
EmbeddedTomcatEmbeddedJettyEmbeddedUndertow
springboot的web项目和一般的springweb项目的区别:
ErrorPageRegistrarBeanPostProcessor
JettyServletWebServerFactory
对servlet进行属性设置
创建容器
WebServerFactoryCustomizerBeanPostProcessor
ServletWebServerFactoryAutoConfiguration
customize(ConfigurableServletWebServerFactory factory)
后置处理器注册器
ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar
TomcatWebServerFactoryCustomizerConfiguration
if (bean instanceof WebServerFactory) { postProcessBeforeInitialization((WebServerFactory) bean); }
0 条评论
下一页