SpringBoot 的来源

Spring 的发展历史

Spring1.X

由于 EJB 和 Java EE 开发的繁琐、低效,Spring 在探索革新中开发出来。

Spring 1.x 版本提供了核心的 IOC 和 AOP 功能。此时 Java 的 1.5 还没有出来,没有注解功能。Spring 的所有配置都在 xml 文件中。

Spring2.x

随着 Java1.5 的出现,Spring 提供了一些注解来实现的配置功能。如@Compoent、@Service、@Controller、@RequestMapper

Spring3.x

注解增强,如

@Configuration 去配置文件

@Compoent-Scan 注解扫描

@Import 引入其他配置类

@Enable 模块驱动,开启某个模块

Spring4.x

全面支持 java8:如 lambda 表达式、新的日期和 api 的支持

核心容器的增强:泛型依赖注入、map 依赖注入、list 依赖注入

web 容器的增强:基于 servlet3.0 开发、提供 RestController 注解

WebSocket 的支持

Spring5.X

最低要求 java8、核心容器修改、响应式编程、使用 kotlin 函数式编程

SpringBoot 的诞生

由于 Spring 在开发应用的时候的繁琐流程,往往搭建一个项目需要大半天的时间,而且还容易出现冲突问题。Springboot 应势而生。Springboot 提供了约定大于配置、Start 封装启动依赖、actuator 监控、以及自带容器的功能。类似于一个脚手架将基本的功能都进行了封装。

加载类的变化

  1. 通过 xml 文件声明 bean
  2. 通过在 xml 中声明 compoent-scan 指定路径+注解
  3. 通过@configuration 注入 bean
  4. 增加@import 注解,指定 select,加载不同的 configuration(没有注解)
  5. Springboot 中的@SpringBootApplication 中包含了@EnableAutoConfiguration,@EnableAutoConfiguration 中包含了@Import 注解,通过 AutoConfigurationImportSelector 扫描所有 jar 包路径下 spring.fatcory 下的配置类(spi 机制)。