后面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 公布!