SpringBoot(二、 多环境配置文件)
程序员文章站
2024-01-16 22:52:04
...
一、多环境支持
1. 多application.yaml文件的方式
- 配置多个application文件,命名方式必须入符合application-()的规范;
- 如果不指定spring-profiles-active,则用application.yaml的配置;
- 如果指定了,就去找对应的application-().yaml文件;
- 支持yaml,yml,properties文件;
application.yaml
server:
port: 8080
spring:
profiles:
active: prod
application-dev.yaml
server:
port: 9001
application-prod.yaml
server:
port: 9002
2. yaml/yml的文档块模式
- 只适合yaml/yml格式;
- 三个短横线将一个yaml文档分为多个文档;
server:
port: 8080
# 表明**了prod环境,不写默认是8080
spring:
profiles:
active: prod
---
# 通过--- 来将一个文档分为三个文档块
server:
port: 9001
# 表明自己是dev文档块
spring:
profiles: dev
---
server:
port: 9002
spring:
profiles: prod
3. 命令行窗口切换
--spring.profiles.active=dev
- 配置文件中指定用的是prod;配置行指定的是用dev;
- 运行结果用的是dev;
4. 配置虚拟机参数运行
- 配置文件中用的是prod,但是虚拟机参数用的是dev,运行结果是dev;
-Dspring.profiles.active=dev
5. 打包后在服务器运行
- 服务通过IDEA的package打包完毕后,打包成一个jar包;
- 现在要在生成环境进行部署的时候,要选择一个环境的参数运行;
java -jar springboot-1.0-SNAPSHOT.jar --spring.profiles.active=prod
前四种,一般用于本地开发及测试
第五种,一般生产部署的时候
二、配置文件加载顺序
1. 开发阶段
- 配置文件application.yaml文件可以放在多个位置;
- 四个位置的application.yaml,依次加载,优先级从高到低;
- 不同配置的参数取并集,相同配置的参数,取最高优先级的;
- 1,2的配置文件,打包后不会存在于jar包中的;
2. 运维阶段
- 项目打包成jar包后,不可能再去改配置文件了,不然需要重新改,重新打包;
- 单独再写一个配置文件,通过在命令行配置的方式,可以加载该配置文件;
- 单独写的配置文件,和项目中的配置文件共同起作用,形成互补作用;
<!--优先级最高-->
java -jar springboot-1.0-SNAPSHOT.jar --spring.config.location=D:\zte\boot\config\application.yaml
三、外部配置加载顺序
- 命令行参数(打包好的jar包,如果需要修改某个参数,可以在命令行进行修改);
java -jar springboot-1.0-SNAPSHOT.jar --server.port=80;
java -jar springboot-1.0-SNAPSHOT.jar --spring.config.location=D:\zte\boot\config\application.yaml;
- jar包外部的application-{profile}.application 或者 application.yaml(带spring.profile);
- jar包内部的application-{profile}.application 或者 application.yaml(带spring.profile);
- jar包外部的application.yaml 或者 application.yaml(不带spring.profile);
- jar包内部的application.yaml 或者 application.yaml(不带spring.profile);
由外而内,先带profile,再不带profile