springboot和servlet和tomcat

Posted chuliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot起飞系列-配置嵌入式Servlet容器

SpringBoot配置嵌入式的Servlet

SpringBoot2使用Jetty容器(替换默认Tomcat)

揭秘springboot集成tomcat原理

SpringBoot拦截器和 Servlet3.0自定义FilterListener

SpringBoot -- 嵌入式Servlet容器