第15章 应用的多环境配置与部署

我们在实际工作过程中,项目通常会经历开发、测试和生产几个阶段,不同的阶段会配置单独的环境。针对这些环境,不同的组织有不同的管理策略,但是都会使用不同的软硬件环境并做一定的隔离,也就是说,会在保持基础软件(操作系统、JDK 版本、应用服务器等)环境不变的情况下,缩减硬件配置,一般而言,开发环境硬件资源最小,测试环境适中,生产环境最好。

在很久以前,开发人员面对这样不同的环境时,通常都是针对不同的环境现场修改配置参数(IP 地址,数据库连接,文件存放的本地路径或文件服务器路径等),不仅麻烦而且容易出错,特别是其他维护人员(非项目开发人员)在修改配置参数时忽略了系统维护手册的详细配置说明的情况,时有发生。

现在,通过 Spring Boot 中提供的配置文件(application.properties)和概要文件(profile)机制可以方便地进行多环境的统一配置。更进一步,Spring Cloud 中的配置中心可以提供分布式的统一集中配置。

当项目组完成一个项目的开发后,就需要部署到测试环境或生产环境,Spring Boot 的 spring-boot-maven-plugin maven 插件能够将后端项目(通常是一个 Web 应用,通过 Rest 接口提供服务)打包成内置 web 服务器的可执行 jar 包(fat jar),可直接部署到服务器上通过nohup java -jar xxx.jar &(Linux命令)方式运行,大大简化了部署工作。

本章,我们简要介绍 Spring Boot 对多环境配置 profile 和部署的支持。
下一节:当我们单独谈到 Spring 时,一般是指 Spring Framework,就如下面的 maven 依赖所示,当前最新的版本为5.2.1(2019年11月2日release)。