Spring Framework 是跨平台 Java/Spring 应用程序开发框架,也是 J2EE(Java 2 Platform, Enterprise Edition) 轻量级框架,其 Spring 平台为 Java 开发者提供了全面的基础设施支持。 Spring 许多基础组件的代码是轻量级,但其配置依旧是重量级的。
它是怎么解决了呢?当然是 Spring Boot,Spring Boot 提供了新的编程模式,让开发 Spring 应用变得更加简单方便。本书将会由各个最佳实践案例驱动,涉及 Spring Boot 开发相关方面。下面先了解下 Spring Boot 框架。
1.1 Spring Boot 是什么
Spring Boot (Boot 顾名思义,引导的意思)框架是简化 Spring 应用从搭建到开发的过程。应用开箱即用,只要通过一个指令,包括命令行 java -jar 、SpringApplication 应用启动类 、 Spring Boot Maven 插件等,就可以启动应用了。另外,Spring Boot 强调只需要很少的配置文件,所以在开发生产级 Spring 应用中,让开发变得高效和简易。
1.1.1 Spring Boot 2.x 特性
那么 Spring Boot 2.x 具有哪些生产的特性呢?常用的特性如下:
- SpringApplication 应用类
- 自动配置
- 外化配置
- 内嵌容器
- Starter 组件
还有对日志、Web、消息、测试及扩展等支持。
SpringApplication
SpringApplication 是 Spring Boot 应用启动类,在 main() 方法中调用 SpringApplication.run() 静态方法,即可运行一个 Spring Boot 应用。简单使用代码片段如下:
public static void main(String[] args) {
SpringApplication.run(QuickStartApplication.class, args);
}
Spring Boot 运行的应用是独立的一个 Jar 应用,实际上在运行时启动了应用内部内嵌容器,容器初始化 Spring 环境及其组件。也可以使用 Spring Boot 开发传统的应用,只要通过 Spring Boot Maven 插件将 Jar 应用转换成 War 应用即可。
自动配置
Spring Boot 在不需要任何配置情况下,就直接可以运行一个应用。实际上,Spring Boot 框架的 spring-boot-autoconfigure 依赖做了很多默认的配置项,即应用默认值。这种模式叫做 “自动配置”。Spring Boot 自动配置会根据添加的依赖,自动加载依赖相关的配置属性。例如,默认用的内嵌式容器是 Tomcat 并端口设置为 8080。
外化配置
Spring Boot 简化了配置,基本在 application.properties 文件配置常用的应用属性。Spring Boot 可以将配置外部化,这种模式叫做 “外化配置”。将配置从代码中分离外置,最明显的作用是只有简单地修改下外化配置文件,就可以在不同环境中,可以运行相同的应用代码。配置相关的会在第 2 章进行实践介绍。
内嵌容器
Spring Boot 启动应用,默认情况下是自动启动了内嵌容器 Tomcat,并且自动设置了端口为 8080。另外还提供了对 Jetty、Undertow 等容器的支持。开发者自行在添加对应的容器 Starter 组件,即可配置对应内嵌容器实例。
Starter 组件
Starter 组件,其开箱即用,是 Spring Boot 重要的组成部分。实际上,Starter 组件是一组可以被加载在应用中的 Maven 依赖项,只需要对应在 Maven 配置中添加依赖配置,即可开启对应依赖使用。例如,添加 spring-boot-starter-web 依赖,就可用于构建 RESTful Web 服务,其包含了 Spring MVC 和 Tomcat 内嵌容器等。
其实,开发中很多功能是通过添加 Starter 组件的方式来进行实现。那么,Spring Boot 2.x 常用的 Starter 组件有哪些呢?
Spring Boot 2.x Starter 组件
Spring Boot 官方提供了很多 Starter 组件,涉及 Web、模板引擎、SQL 、NoSQL、缓存、验证、日志、测试、内嵌容器等,还提供了事务、消息、安全、监控、大数据等支持。