杂记-1

http2新特性

1. 二进制帧

http1 header是纯文本传输, http2是二进制

2. 多路复用

http2 把HTTP消息分解成独立的帧, 交错传输, 然后在另一端组装

http1 一个链接 每次只能发送一个请求, 得到响应后再发送另一个请求

3. 头部压缩

 

springboot2.x与1.x区别

1. JDK最低要求1.8

2. 响应式编程WebFlux

3. http2的支持

4. 第三方类库升级(Spring Framework 5+等)(可以说springboot2.x的新特性来自于spring framework5的新特性)

5. 默认HikariCP连接池

6. 功能完善和加强(配置属性绑定, kotlin,Actuator加强, web加强,Quartz支持)

 

springboot 启动过程

https://www.processon.com/view/link/59812124e4b0de2518b32b6e

https://www.jianshu.com/p/7cb729946c3c

1. new SpringApplication(Main.class), 初始化

1.1 source配置, primarySources

1.2 webApplicationType, 类型: servlet, none, reactive

1.3 配置初始化构造器, setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));

1.4 配置监听器, setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));

1.5 找main方法的class

 

2. SpringApplication.run, 运行

2.1 准备environment, 发布 environmentPrepared -> BootstrapApplicationListener -> bootstrapServiceContext -> build ConfigurableApplicationContext -> run(也是springapplication, 创建context=AnnotationConfigApplicationContext, prepare context, ApplicationContextInitializer)

2.2 printBanner

2.3 createApplicationContext

2.4 prepareContext(load -> App的class将被注册, 生成bean definition)

2.5 refreshContext (startWebServer -> init servlet -> initWebApplicationContext -> refresh -> load bean definition -> 创建bean)

2.6 afterRefresh

2.7 listeners.started(context);

2.8 callRunners

2.9 listeners.running(context);

posted @ 2019-09-01 17:46  raindream  阅读(280)  评论(0编辑  收藏  举报