1.2 Spring Boot简介
在本节中,我们从整体上简要介绍一下Spring Boot框架。
1.2.1 Spring Boot是什么
Java Web开发涉及的技术比较繁杂,有很多开发框架和工具(Java、Scala、Kotlin、Clojure、Groovy、Grails、Gradle、Maven、JDBC、MySQL、Oracle、MongoDB、Tomcat、Jetty、Spring、Struts、Hibernate、MyBatis、JPA、JSP、Velocity、FreeMarker、Thymeleaf、Redis等),而且它们各有所长,并不是一个完整的体系。这提高了程序员进行Jave Web开发的技术门槛和学习成本。
有没有一个像“航空母舰”式的威力强大的武器,可以整合这一切呢?答案就是:Spring Boot。
Spring Boot由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot是伴随着Spring 4.0诞生的。从字面理解,Boot是引导的意思,因此Spring Boot极大地帮助了开发者快速搭建使用Spring框架开发应用程序的过程。例如,Spring Boot可以直接快速启动一个内嵌的Web容器,而无须单独安装和配置Web服务器。
Spring Boot框架遵循“约定优于配置”的思想。清除了原先使用Spring框架的那些样板化的配置。Spring Boot继承了原有Spring框架的优秀基因;Spring Boot使得基于Spring的开发过程更加简易。Spring Boot致力于帮助开发人员快速开发应用。
多年以来,Spring IO平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理。Spring Boot实现了“零XML配置”的极简开发体验。
然而,Spring Boot并不是要成为Spring IO平台里面众多“Foundation”层项目的替代者。Spring Boot的目标是为平台带来另一种开发体验,从而简化对这些已有技术的使用。对于已经熟悉Spring生态系统的开发人员来说,Boot是一个很理想的选择;对于采用Spring技术的新人来说,Boot提供了一种极简的方式来使用这些技术。
作为当前主流的企业框架Spring,它提供了一整套相关的顶级项目,能让开发者快速上手实现自己的应用。Spring Boot在整个Spring生态中的位置如图1-4所示。
图1-4 Spring Boot在整个Spring生态中的位置
Spring Boot是构建基于Spring的应用程序的起点。Spring Boot旨在让你尽可能快地启动和运行,并以最小的预先配置的Spring配置。使用Spring Boot我们可以体验到下面的这些(但不仅限于)特性:
❑使用Spring Initializr在数秒内创建Spring应用程序。
❑构建任何东西——REST API、WebSocket、Web、流媒体、任务等。
❑简化了安全(Security)权限的开发。
❑丰富的SQL和NoSQL支持。
❑嵌入式运行时支持——Tomcat、Jetty和Undertow。
❑开发人员的生产力工具,例如实时重载(reload)和自动重启(restart)。
❑开箱即用的模块化依赖。
❑供生产环境直接使用的特性,如跟踪、度量和健康状态的监控。
❑丰富的IDE支持:Spring Tool Suite、IntelliJ IDEA和NetBeans。
Spring Boot的核心特性如下:
❑创建一键运行的Spring应用。
❑能够使用内嵌的Tomcat、Jetty或Undertow,不需要部署war。
❑提供定制化的启动器starters简化第三方依赖配置。
❑追求极致的自动配置Spring。
❑提供一些生产环境的特性,比如特征指标、健康检查和外部配置。
❑零代码生成和零XML配置
Java EE原来开发应用的步骤是:
❑应用打成war包。
❑启动应用服务器。
❑在应用服务器中进行部署。
微服务时代,从部署到服务器中改造为直接启动应用进程,内嵌一个Web容器。把所需要的jar和应用代码全部打包到一个jar或者war中。如果打成可执行jar包,我们可以直接通过java -jar example.war的方式来启动服务。
嵌入式Tomcat早就存在,Spring Boot支持内嵌Tomcat、Jetty和Undertow等Web服务器。测试表明Undertow比Tomcat性能更好。类似于Wildfly-swarm等微服务框架,Spring Boot拥有相似的架构和开发/构建方法。例如,Wildfly-swarm和Spring Boot的基础组件对比见表1-1。
表1-1 Spring Boot和Wildfly-swarm基础组件对比
1.2.2 Spring Boot核心模块
Spring Boot核心模块如图1-5所示。
图1-5 Spring Boot核心模块
下面我们简要介绍一下Spring Boot的核心模块。
1. spring-boot
Spring Boot核心工程。
2. starters
是Spring Boot的启动服务工程。spring-boot中内置提供的starter列表可以在Spring Boot项目源代码工程spring-boot/spring-boot-starters中看到。这些starters的使用例子,在源码中的spring-boot/spring-boot-samples工程中。
3. autoconfigure
是Spring Boot实现自动配置的核心工程。
4. actuator
提供Spring Boot应用的外围支撑性功能。比如:应用状态监控管理、应用健康指示表、远程shell支持、metrics支持等。
5. tools
提供了Spring Boot开发者的常用工具集。诸如,spring-boot-gradle-plugin、spring-boot-maven-plugin就在这个模块里面。
6. cli
是Spring Boot命令行交互工具,可用于使用Spring进行快速原型搭建。可以用它直接运行Groovy脚本。如果你不喜欢Maven或Gradle,可用CLI(Command Line Interface)来开发运行Spring应用程序。可以使用它来运行Groovy脚本,甚至编写自定义命令。