一.springBoot是什么?
在介绍 SpringBoot 之前我们首先来简单介绍一下 Spring。Spring 是诞生于2002年的 Java 开发框架,可以说已经成为 Java 开发的事实标准。所谓事实标准就是虽然 Java 官方没有说它就是开发标准,但是在当前 Java 开发的众多项目中,当我们谈到产品级的 Java 项目的时候,大多都是基于 Spring 或者应用了 Spring 特性的。
Spring 基于 IOC 和 AOP 两个特性对 Java 开发本身进行了大大的简化。但是一个大型的项目需要集成很多其他组件,比如一个 WEB 项目,至少要集成 MVC 框架、Tomcat 这种 WEB 容器、日志框架、ORM框架,连接数据库要选择连接池吧……使用 Spring 的话每集成一个组件都要去先写它的配置文件,比较繁琐且容易出错。
然后就有了SpringBoot。
Spring Boot 是由 Pivotal 团队提供的全新框架,2014 年 4 月发布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0发布。它是对spring的进一步封装,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。怎么简化的呢?就是通过封装、抽象、提供默认配置等方式让我们更容易使用。
SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
二.springBoot为什么出现?
为什么会产生 SpringBoot 呢?
刚才说 SpringBoot 简化了基于 Spring 开发,这只是最直观的一方面,事实上 SpringBoot 的诞生有它所处的大时代背景这个原因在里面的,那就是微服务,这也是谈 SpringBoot 必谈微服务的原因。
2014年一个叫 Martin Fowler (同时也是经典著作《重构:改善既有代码的设计》一书的作者)发表了一篇关于微服务的博客,比较形象生动地介绍了什么是微服务,然后微服务才慢慢被人所熟知。他说微服务其实是一种架构风格,我们在开发一个应用的时候这个应用应该是由一组小型服务组成,每个小型服务都运行在自己的进程内;小服务之间通过HTTP的方式进行互联互通。和微服务相对应的就是我们之前的,单体应用,就是大名鼎鼎的 all in one 的风格。这种风格把所有的东西都写在一个应用里面,比如我们熟悉的OA,CRM,ERP系统,所有的页面,所有的代码都放在一起,打成打成一个war包,然后把war包放在Tomcat容器中运行。
当然,如果能直接使用IDE来进行上述操作可以让这个过程变得更顺滑。如果你使用的是 IDEA 商业版的话,新建工程的时候直接有 Spring 的选项;如果是IDEA社区版的话,可以安装 Spring Assistant 这个插件可以实现同样的功能。它们的原理是帮你把连接 Spring Initializr 并下载解压这个过程自动化了,所以只需要保持网络畅通就行了。