SpringBoot 使用spring.profiles.active 来区分配置

2020-04-01 0 By admin

很多时候,我们项目在开发环境和生产环境的环境配置是不一样的,例如,数据库配置。这时候,我们可以利用profile在不同的环境下使用不同的配置文或配置项。
spring boot允许通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件;并通过在application.properyies文件中使用spring.profiles.active配置项来指定具体激活一个或者多个配置文件。

一、多环境配置文件

对于多环境的配置,各种项目构建工具或框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,Spring Boot也不例外,或者说更加简单。
如果没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties

1.1、配置文件的位置

profile的配置文件和application.properyies的放置位置一样,放于以下四个位置:

  1. 当前目录的 “/config”的子目录下
  2. 当前目录下
  3. classpath根目录的“/config”包下
  4. classpath的根目录下

1.2、配置文件的命名

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境

二、配置文件激活方式

2.1、在properties 文件中设置active

程序在启动过程中会默认加载application.properties中的配置,我们只需要在application.properties文件中使用spring.profiles.active属性来设置即可。属性的值对应上面提到的{profile},如上面的文件对应的值分别为:dev、test和prod。

2.2、在properties 文件中设置include

spring.profiles.include 用于设置工程的公共配置,也就是include 包含的profile会无条件的active。

2.3、在命令行中添加相关选项

在命令行中使用--spring.profiles.active=dev设置激活具体的配置文件。

2.4、修改虚拟机的配置

在启动命令行中添加-Dspring.profiles.active=dev配置。

三、内容补充

3.1、屏蔽命令行中的设置

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?所以Spring Boot也提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)

3.2、Maven 服务构建项目过程设置

Maven 构建项目时根据环境参数调整构建的过程 Profile