SpringBoot启动原理
2021-04-13 10:57:53 119 举报
SpringBoot启动原理是通过扫描项目中的注解,然后根据注解的信息进行相应的操作。在启动过程中,SpringBoot会先加载配置文件,然后创建并初始化Spring容器,接着扫描项目中的注解,最后根据注解的信息进行相应的操作。其中,SpringBoot会自动配置一些默认的属性值,如果项目中没有指定这些属性值,则使用默认值。此外,SpringBoot还支持自定义配置文件和属性值,可以通过application.properties或application.yml文件来指定。总之,SpringBoot启动原理是一个复杂的过程,涉及到多个方面的操作。
作者其他创作
大纲/内容
导入了三种不同服务器Tomcat、jetty、Undertow默认是Tomcat的生效
SpringBoot原理
@import WebServerFactoryCustomizerBeanPostProcessorweb服务器工厂定制化器的后置增强
@import(AutoConfigurationImportSelector.class)导入组件SpringFactoriesLoader.loadFactoryNames();去类路径下找META-INF/spring.factories 文件的SPI机制;找到@EnableAutoConfiguration全类名对应的所有配置的值
AnnotationConfigfServletWebServerApplicationContextSpringBoot底层用的ioc容器。ioc容器刷新要加载配置类
拿到前面的Web服务器工厂,调用创建服务器方法ServletWebServerFactory
组件定义信息加载
1.SpringBoot.run会创建一个ioc容器AnnotationConfigServletWebServerApplicationContext2.ioc容器启动onRefresh会启动Tomcat3.Tomcat启动会加载所有的Servlet4.DispatcherSerlvet加载九大组件的整个初始化流程
Tomcat启动以后
ServletWebServerApplicationContext.onRefreshweb版ioc容器 onRefresh环节会做以下事情
Tomcat启动的时候,要把所有的SerlvetContextInitializer搞进来进行管理
准备ServletContextInitializer
addServlet之类的方法把自己注册到Tomcat里面把DispatcherServlet配置好,并给容器放好Registrationbean
@AutoConfigurationPackage指定我们以后要扫描哪些包下的所有组件以后观察AutoConfigurationPackages的BeanDefinition怎么创建对象处理的,就知道我们自己写的controller何时进去等
Tomcat 和 SpringMVC的组件的准备过程
new Tomcat让他启动
ServletWebServerFactory服务器工厂:让我们产生并启动服务器
容器中放了TomcatServletWebServerFactory我们自己也可以放一个ServletWebServerFactory
ServletWebServerFactoryAutoConfiguration搞定ServletWeb服务器
参照以前SpringMVC原理即可父子容器中很多步骤都执行了就只需要执行剩下的操作
每一个RegistrationBean就注册进去了
利用SPI机制
容器刷新十二大步,前面所有组件定义信息进来了
DispatcherServletAutoConfiguraiton搞定SpringMVC的前段控制器
DispatcherServlet开始执行整个初始化流程
createWebServer();创建web服务器
Spring启动容器,SpringMVC启动容器,embedTomcat启动
0 条评论
下一页