历史背景
随着 2007 年 Spring 1.0 版本的发布,Spring 依靠 IoC 和 AOP 两大内核技术,以简化 Java 开发为目标,为广大 Java 开发者提供了一个轻量级的一站式企业级框架,彻底解决了 Sun 公司发布的 EJB 重量级框架的繁琐和难用问题,逐渐成为 JavaEE 企业级开发框架的领导者。
随着 Spring 框架的发展以及企业的大量使用,Java 开发者逐渐对 Spring 的大量 XML 配置感到头痛和不满,虽然在 Spring 2.0 版本中引入了对注解的支持,一定程度缓解了 XML 配置繁琐的问题,但框架相关配置仍繁琐和极易出错;另一方面,随着项目规模的扩大,项目中需要导入更多的 Jar 依赖包,大量的 Jar 包很容易出现版本兼容性问题,这也让 Java 开发者感到烦恼和痛苦。
基于 Spring 框架使用者的反馈的配置繁琐和 Jar 依赖冲突问题,为此 Spring 开源组织积极响应,SpringBoot 终于诞生了。
这就是 SpringBoot 框架产生的历史背景。
什么是 SpringBoot
Spring Boot 是由 Pivotal 团队提供的全新框架,它是基于 Spring4.0 设计,不仅继承了 Spring 框架原有的优秀特性,而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。
SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
关于 SpringBoot 有一句很出名的话就是约定大于配置。采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 应用中这些第三方库几乎可以零配置地开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
SpringBoot 四大神器
-
自动配置
针对很多 Spring 应用程序常见的应用功能,Spring Boot 能自动提供相关配置(默认配置),号称可以做到 0 配置,不需要任何 XML 配置文件。
-
起步依赖
告诉 Spring Boot 需要什么功能,它就能引入需要的所有库,在 maven 的基础上进一步方便管理 Jar 依赖包,减少 maven pom 配置依赖包的麻烦。
-
命令行界面
这是 Spring Boot 的可选特性,借此你只需写在命令行执行几条命令就能完成完整的应用程序,无需传统项目构建。由于这种项目构建方式有别于传统方式,所以使用起来有一些别扭和不习惯。
-
Acuator
让你能够深入运行中的 Spring Boot 应用程序、一探究竟,具体而言就可以可以监控应用程序的各自运行情况。
SpringBoot 项目创建
有三种方式可以创建 SpringBoot 项目
-
SpringBoot 项目本质上是一个 maven 项目,所以可以先创建 maven 项目,然后在添加 SpringBoot 的依赖包
-
在 SpringBoot 的官网平台上创建项目,如下:
平台地址 :https://start.spring.io/
-
在 IDEA 中创建
新建 project 选择 Spring Initializr
创建时还可以提前勾选需要导入的功能,如下:
总结
从最根本上来讲,Spring Boot 就是一些库的集合,它能够被任意项目的构建系统所使用。它使用 “习惯优于配置” (项目中存在大量的配置,此外还内置一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是 spring boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,总结一下及几点:
-
为所有 Spring 开发提供一个更快更广泛的入门体验。
-
零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。
-
集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。
-
提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。
SpringBoot 不是 Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备。
一句话,SpringBoot 框架就是为了方便快捷使用 Spring 应用程序而存在。