时至今日,SpringBoot 系列文章也算是告一段落,回想起当初立flag的情景,仿佛还历历在目。用一个月时间学完 SpringBoot 并整理成文章?又定一些异想天开计划,当时这样想着。不过,虽然过程比较艰辛,但结局也还算完美,在最后一篇文章完成那一刻,心情却很平静,我想,大概是习觉得常了吧。html
在系列结尾,再对 SpringBoot 作一个总结,也算是尘埃落定了。web
SpringBoot 最显著的功能就是快速启动一个 Spring 应用,为 Spring 全部特性提供了更普遍的支持;提供一系列大型项目通用的非功能性功能(例如嵌入式服务器,安全性,指标,运行情况检查和外部化配置);彻底没有代码生成,也不须要XML配置也是一大亮点。spring
该系列文章虽然以讨论 SpringBoot 为中心,但也涉及到了 Spring 技术栈,由于 SpringBoot 底层核心是就是 Spring ,若是对 Spring 了如指掌,那学习 SpringBoot 就垂手可得了。安全
SpringBoot 中运用了大量的 Spring 注解,其注解大体分为这几类:app
配置注解都在 Spring 的 ConfigurationClassParser#doProcessConfigurationClass 方法中进行处理,后续会在 Spring 系列文章中详细介绍;模式注解都标注了 @Component 注解,属于 @Component 的派生注解,@ComponentScan 会扫描标注 @Component
及其派生注解的类,并将这些类加入到 Spring 容器中;@Enable
模块注解中经过 @Import
导入配置类,在这些配置类中加载 @Enable
模块须要的组件。学习
详见《SpringBoot(二)自动装配正文》code
在 SpringBoot
时代,经过一个main方法就能够启动一个应用,其底层依赖的就是 Spring
几个注解。从 @SpringBootApplication
注解中的 @EnableAutoConfiguration
注解开始,@EnableAutoConfiguration
属于 Spring
的 @Enable
模块注解,在该注解中经过 @Import
导入 AutoConfigurationImportSelector
类,在该类中加载全部以 AutoConfiguration
为后缀且标注 @Configuration
注解的自动配置类,每一个自动配置类能够装配一个外部模块,如 Web MVC 模块对应的配置类是 WebMvcAutoConfiguration
。在自动配置类中又有众多 @Conditional
条件注解,可达到灵活装配的目的。htm
详见《SpringBoot(三)SpringApplication启动类准备阶段》blog
在构造 SpringApplication
启动类时,初始化了几个重要的类,如 WebApplicationType
、ApplicationContextInitializer
、ApplicationListener
。其中 WebApplicationType
存储的是当前应用类型,如 Servlet Web 、Reactive Web; ApplicationContextInitializer
和 ApplicationListener
则是 SpringBoot
经过扩展 Spring 特性建立的初始化器及监听器。
详见《SpringBoot(四)SpringApplication启动类运行阶段》
在 SpringApplication
运行阶段中,先是经过扩展 Spring
监听机制,在 SpringBoot
各个阶段发布不一样事件,执行多个事件监听器;而后建立 Environment
类,这是外部化配置的核心类;最后启动 Spring
容器,经过 WebApplicationType
断定当前应用类型,建立应用对应 ApplicationContext
应用上下文,再调用 ApplicationContext#refresh
方法启动容器。
详见《SpringBoot(五)外部化配置之Environment》
这篇文章介绍了外部化配置的几种资源类型,如 properties、YAML、环境变量、系统属性、启动参数等。还详细介绍了 Environment
类,该类是外部化配置核心类,全部外部化配置数据,都保存在该类中,并和你们讨论了整个存储流程。
详见《SpringBoot(六)外部化配置之@ConfigurationProperties》
@ConfigurationProperties
是 SpringBoot
实现外部化配置的重要注解,配合 SprinBoot
自动装配特性来达到快速开发的目的。主要将 properties 配置文件和 Properties 配置类中的属性进行映射,一样也和你们讨论了整个映射流程。
这篇文章详细讨论了容器的建立及启动。传统 Spring
应用需手动建立和启动 Web 容器,在 SpringBoot
中,则是嵌入式的方式自动建立和启动。SpringBoot
支持的 Web 容器类型有 Servlet Web 容器和 Reactive Web 容器,它们都有具体容器实现,Sevlet Web 对应的是 Tomcat
、Jetty
、Undertow
,默认实现是 Tomcat
;Reactive Web 对应的是 Netty
。
详见《SpringBoot(八)Starter机制之自定义Starter》
这篇文章详细介绍了 SpringBoot
的 Starter
机制,并经过自定义 Starter
来深刻理解整个运行机制。Starter
也是 SpringBoot
重要特性,经过集成 Starter
依赖,来简化项目搭建以及开发过程。
总结篇就到这里结束,最后,江湖路远,咱们,下个系列见。