后面10节的回顾
通过后面10节SpringBoot成长记的剖析,你应该对SpringBoot的原理和设计思维有了很清晰的意识了。
最初这一节呢,咱们将之前每一节最重要的知识点,提取进去一个总结。
第一节成长记1:你真的懂SpringBoot吗?
咱们通过去官网文档寻找SpringBoot外围性能,教给大家两个思维,先脉络后细节的思维和重视思考的思维。
我本人对SpringBoot性能的思考:SpringBoot定义了新的web利用启动流程、SpringBoot核解决了Spring集成各种技术的复杂性。
第二节成长记2:从HelloWorld开始剖析SpringBoot
咱们从HelloWorld开始剖析,剖析了:SpringApplication的创立时外围组件图、SpringApplication Run办法的脉络
传授给大家2个思维
1)连蒙带猜的思维,依据办法名称,正文大体猜想办法和类的作用
2)抓大放小的思维,排除不重要的,剖析最次要的。
第三节成长记3:SpringBoot扩大点之SpringApplicationRunListeners
SpringApplicationRunListeners的扩大
1)对流程的扩大办法 starting started running等
2)对配置文件的扩大办法environmentPrepared
3)对容器的扩大办法contextPrepared、contextLoaded
Listeners的扩大点设计
基于配置封装List<Listeners>,基于类封装不同阶段的扩大
基于观察者模式设计批量事件播送器、查问缓存升高O(n)复杂度
第四节成长记4:Run办法中配置文件的解决
咱们剖析了SpringBoot对对配置文件的解析,配置文件解决外围逻辑是创立配置文件对象、给配置文件对象设置一堆值,次要是各个配置文件。
而最要害的是配置文件的设计思考
1)配置文件须要查找:ResourceLoader(ClassLoader)
2)不同配置文件的解析:不同的Resolver
3)配置文件的内容封装:PropertySource+profile 泛型设计,存储不同格局内容
4)多个配置文件MutablePropertySources:List<PropertySource>
第五节成长记5:Spring容器的创立
Spring容器的创立时的外围组件:reader和scanner、DefaultListableBeanFactory
reader和scanner的设计和作用:reader解析和减少BeanDefination、scanner查找和过滤BeanDefination
术语遍及BeanDefinition、BeanDefinitionRegistry、InternalBean
从Reader和Scanner开始思考下Spring容器的形象设计,Resource->ClassLoader->Reader/Scanner->BeanDefination的设计
第六节成长记6:筹备SpringContext容器
prepareContext()的外围脉络:给容器Context和容器DefaultListableBeanFactory设置一些属性
触发的扩大点(十分重要的操作):applyInitializers()触发的扩大点操作、触发listener对容器扩大操作
术语遍及BeanFactoryPostProcessor是什么?
beanFactory的一些属性补充(值得一提的操作):
1 )beanFactory.registerSingleton注册对象到容器的singletonObjects属性
2)BeanDefinitionLoader.load()补充BeanDefinition,这里补充了1个LearnSpringBootApplication 的BeanDefinition到beanFactory中
设置几个属性或者组件(不重要的操作)
第七节成长记7:容器的扩大操作是如何执行的
疾速摸一下refreshCotenxt的脉络
invokeBeanFactoryPostProcessors之前的次要操作概括
术语遍及BeanDefinitionRegistryPostProcessor是什么?
invokeBeanFactoryPostProcessors的外围脉络
1)if-else外围脉络逻辑:执行扩大办法1:postProcessBeanDefinitionRegistry()、执行扩大办法2:postProcessBeanFactory()
2)3个For循环的外围脉络逻辑:之前执行的是Spring外部定义好的一些BeanFactoryPostProcessor,
在执行了if-else逻辑后,其实扫描进去了ClassPath下更多第三方和其余的BeanFactoryPostProcessor
第八节成长记8:SpringBoot实现主动拆卸配置,第三方性能的扩大之处
1)SpringBoot实现主动拆卸配置
术语遍及starter是什么?
外围的ConfigurationClassPostProcessor
思考:ConfigurationClassPostProcessor的增加BeanDefination的设计
2)第三方性能的扩大之处实现原理
思考:mybatis的Mapper如何被增加的?
基于ImportBeanDefinitionRegistrar的扩大
基于BeanFactoryPostProcessor的扩大
第九节成长记9:onRefresh如何启动内嵌的Tomcat容器的
1)疾速看了 onRefresh启动内嵌tomcat前的操作
2)剖析了onRefresh的外围脉络
3)思考了SpringBoot对web容器的形象封装和设计
4)对new Tomcat进行了外围组件和脉络剖析
5)剖析了Connector根本创立和扩大设计
6)术语遍及:Tomcat的Engine、Context、Host、Wrapper关系
7)prepareContext 中的扩大点ServletContextInitializer
8)思考了:tomcat和SpringBoot怎么整合的?
9)内嵌Tomcat最终的启动
第十节成长记10:Bean实例化的流程和设计
finishBeanFactoryInitialization之前和之后的操作详情
preInstantiateSingletons办法的外围脉络
创立bean的外围流程
Bean实例化的扩大点设计
完结寄语
到这里SpringBoot成长记就告一段落了,其实最要害的是教给大家的思维,之后SpringBoot的设计和扩大点,最初才是SpringBoot的原理。
当你把握这些之后,SpringBoot的很多细节,甚至其余相似的逻辑,你都能触类旁通了。那么成长记的目标就达到了
心愿能够通过SpringBoot成长记,学到的货色能够学以致用,触类旁通,利用到更多技术学习、面试、线上问题解决等场景中,就像我开篇说的。
一个人成长的按重要性排的程序应该是:思想观念—>能力办法—>常识、支出。
好了,咱们下一个成长记再见!
最终给大家来个图,完结撒花~~
彩蛋:成长记除了常识和思维篇,成长记个别还会有生产和实战经验篇,JDK、Kafka、ZK、SpringBoot都会有不定期的更新哟,大家敬请期待~~
本文由博客一文多发平台 OpenWrite 公布!