微服务相关知识点
2023-09-17 21:40:40 6 举报
AI智能生成
spring boot启动原理
作者其他创作
大纲/内容
spring boot
SpringBootApplication.run
初始化容器
添加Import注解,导入WebServerAutoConfiguration
添加获取TomcatServer的Bean
添加获取JettyServer的bean
添加获取undertowServer的bean
获取webSever容器
获取每一个Server上面的@ConditionOnClass上面配置的value,
根据value通过classloader加载,如果能够加载上说明导入了相关的依赖
根据value通过classloader加载,如果能够加载上说明导入了相关的依赖
启动容器
ico容器启动重写onfresh调用启动tomcat容器
spring boot相关原理
spring boot的自动装配原理
开启SpringBootApplication注解
开启EnableAutoConfiguration
@Import({AutoConfigurationImportSelector.class})
getAutoConfigurationEntry// 加载配置类
获取所有的META_INFO/下所有配置的类信息 // getCandidateConfigurations
移除重复的类型 // removeDuplicates(configurations);
移除增加了排除注解//
Set<String> exclusions = this.getExclusions(annotationMetadata, attributes);
configurations.removeAll(exclusions);
Set<String> exclusions = this.getExclusions(annotationMetadata, attributes);
configurations.removeAll(exclusions);
过滤 //this.filter(configurations, autoConfigurationMetadata)
OnBeanCondition
OnClassCondition
OnWebApplicationCondition
spring boot的启动流程
初始化SpringApplication
new SpringApplication(primarySources))
new SpringApplication(primarySources))
推断当前容器的类型
NONE
SERVLET
REACTIVE
设置初始化器,初始化器从factory.service当中获取ApplicationContextInitializer
设置监听器,监听器从factory.service当中ApplicationListener
设置main方法的入口
运行run方法
发布容器启动的监听事件
SpringApplicationRunListeners
starting
读取环境变量和全局变量
获取java、system、操作系统的环境变量
SpringApplicationRunListeners
environmentPrepared
打印banner
创建Spring boot容器
SERVLET
AnnotationConfigServletWebServerApplicationContext
REACTIVE
AnnotationConfigReactiveWebServerApplicationContext
DEFAULT
AnnotationConfigApplicationContext
容器的准备 //prepareContext
设置容器的环境
context.setEnvironment(environment);
context.setEnvironment(environment);
执行容器的初始化器的初始化方法
applyInitializers
applyInitializers
ApplicationContextInitializer.initialize
发布容器的准备监听事件
listeners.contextPrepared
listeners.contextPrepared
SpringApplicationRunListeners
contextPrepared
将容器参数注册成bean
如果是懒加载,增加beanFactory的后置处理器
LazyInitializationBeanFactoryPostProcessor
加载容器
load
发布容器加载事件
SpringApplicationRunListeners
contextLoaded
容器的刷新
通过BeanFactory的后置处理器解析@Import的相关注解,并执行bean的相关方法
ConfigurationBeanFactoryPostProcessor
AnnotationConfigServletWebServerApplicationContext.refresh
重写onRefresh
启动TomcatServer
容器的加载之后
模板方法未实现
发布容器启动时间
SpringApplicationRunListeners
started
自定义start
0 条评论
下一页