springboot嵌入tomcat原理

一、spring自动配置原理

spring启动的时候只需要添加SpringbootApplication注解,然后运行SpringApplication.run方法就可以进行自动配置运行

 1.1 springbootapplication注解是一个组合复合注解,说主要的三个注解

  1. SpringBootConfiguration表明这是一个配置类
  2. EnableAutoConfiguration开启自动配置功能
  3. ComponentScan是一个包扫描器,会扫描 指定包路径下controller,service,dao等注解的类

 

1.2 重点介绍EnableAutoConfiguration

AutoConfigurationPackage注解通过点进去看源码可以发下,主要是通过Import机制,将AutoConfifigurationPackages.Registrar.class导入到容器中

AutoConfifigurationPackages.Registrar.class实现了ImportBeanDefinitionRegistrar接口会在容器refresh的时候调用

 

 1.3  @Import({AutoConfigurationImportSelector.class})

也是通过继承DeferredImportSelector往容器中导入了classpath下的spring.factory文件中定义的一些自动配置类

 

二、自动配置web原理

 

 

通过EnableAutoConfiguration会加载自动配置类

  1. ServletWebServerFactoryAutoConfiguration导入了一个tomcat工厂
  2. DispatcherServletAutoConfiguration配置好了DispatcherSevlet
  3. SpringBoot启动的时候会用到ioc容器AnnotationConfigServletWebApplicationContext

 

 onRefresh方法会进去到ServletWebServerApplicationContext

createWebServer会调用tomcat工厂的getWebServer方法

 

 tomcat启动后会执行ServletContextInitializer.startup方法

最后会将DisparcherServlet放入到servletcontext属性里

DisparcherServlet开始初始化流程,开启mvc功能

 

posted @   余明星  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示