天天看点

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

很多时候,我们项目在开发环境和生产环境的环境配置是不一样的,例如,数据库配置。这时候,我们可以利用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 服务构建项目过程设置