很多时候,我们项目在开发环境和生产环境的环境配置是不一样的,例如,数据库配置。这时候,我们可以利用profile在不同的环境下使用不同的配置文或配置项。
spring boot允许通过命名约定按照一定的格式(application-{profile}.properties
)来定义多个配置文件;并通过在application.properyies
文件中使用spring.profiles.active
配置项来指定具体激活一个或者多个配置文件。
一、多环境配置文件
对于多环境的配置,各种项目构建工具或框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,Spring Boot也不例外,或者说更加简单。
如果没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties
。
1.1、配置文件的位置
profile的配置文件和application.properyies
的放置位置一样,放于以下四个位置:
- 当前目录的 “/config”的子目录下
- 当前目录下
- classpath根目录的“/config”包下
- 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 服务构建项目过程设置