Spring Boot 多环境配置
通常,在我们应用开发中,需要多个环境配置,一般是开发、测试、生产,有的还有演示环境。这些环境有不同的配置需求:
- 服务的端口、ip地址
- 数据库的信息、连接池等
- 日志配置、日志级别
- 第三方系统访问配置
Spring Boot 简化了配置,属性配置都放在了 application.properties
中,除 application.properties
文件外,还可以使用 application-{profile}.properties
命名约定来定义特定于配置文件的属性
这样可以有多个配置文件, 可以在系统部署的时候,使用 spring.profiles.active
属性指定使用哪个配置文件覆盖默认的 application.properties
, 从而完成多环境部署。
如下配置三个不同环境的配置文件
在 application.properties 中设置
spring.profiles.active=test
启动后可以看到
说明是使用了 application-test.properties 的环境配置
以上在开发中可以很方便切换环境,部署时也可以很简单
java -jar -Dspring.profiles.active=prod target/myproject-0.0.1-SNAPSHOT.jar
以上配置启动后, Spring Boot 将读取 appIication-prod.properties 配置文件,覆盖默认的application. properties 选项
另外,为了安全考虑,开发环境不应该有线上环境的各种配置信息。可以将配置文件放到特定的目录中,井用 spring.config.location
指定配置文件的目录
java -jar -Dspring.config.location=file:env/ -Dspring.profiles.active=test target/myproject-0.0.1-SNAPSHOT.jar
配置文件位于当前目录的 env 目录下, profile 是test,因此会读取的是 env 下的 application-test.properties 配置文件
Spring Boot 如何找到配置文件:
Spring Boot 应用默认读取了application.properties 文件,实际上, Spring Boot 会自动 搜索classpath:、classpath:/config 、file: 、file:config/ 这些目录下的配置文件,优先级 由低到高, file:config/的优先级最高
这是系统属性 spring.config.location 默认的配置。spring .config .name 表示配置文件的 名称,默认是application