springboot和servlet和tomcat
之前的spring項目是tomcat實例化filter,servlet,初始化兩個spring容器,然後調用springmvc
現在是springboot先初始化容器,再在onfresh方法中初始化tomcat容器和servlet容器。那麽數據和引用是怎麽流動的呢?
refresh()------>onRefresh()------>createEmbeddedServletContainer()---->{embeddedServletContainer通過下面說的註冊的TomcatEmbeddedServletContainerFactory,獲取EmbeddedServletContainer,}
////EmbeddedServletContainerAutoConfiguration是spring.factory中的自動註解,作用有
@Import(BeanPostProcessorsRegistrar.class)這個class名字起的挺大氣的,但是是內部類,所以沒關系的,實現了BeanFactoryAware接口,咦,ImportBeanDefinitionRegistrar接口是怎麽加入spring工廠的呢?先不管,會註冊一個
EmbeddedServletContainerCustomizerBeanPostProcessor,這個是beanpostprocessor,可能是在獲取tomcat相關bean的時候使用的。
註冊一個TomcatEmbeddedServletContainerFactory(或者jetty或者Undertow,根據第三方jar包存在與否,先不管)
//DispatcherServletAutoConfiguration同理,也會註冊一個dispatchServlet到容器中
springboot和servlet和tomcat