欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    SpringBoot(二、 多环境配置文件)
4. 配置虚拟机参数运行
  • 配置文件中用的是prod,但是虚拟机参数用的是dev,运行结果是dev;
-Dspring.profiles.active=dev

SpringBoot(二、 多环境配置文件)

5. 打包后在服务器运行
  • 服务通过IDEA的package打包完毕后,打包成一个jar包;
  • 现在要在生成环境进行部署的时候,要选择一个环境的参数运行;
java -jar springboot-1.0-SNAPSHOT.jar --spring.profiles.active=prod

前四种,一般用于本地开发及测试
第五种,一般生产部署的时候

二、配置文件加载顺序

1. 开发阶段
  • 配置文件application.yaml文件可以放在多个位置;
  • 四个位置的application.yaml,依次加载,优先级从高到低;
  • 不同配置的参数取并集,相同配置的参数,取最高优先级的;
  • 1,2的配置文件,打包后不会存在于jar包中的;
    SpringBoot(二、 多环境配置文件)
2. 运维阶段
  • 项目打包成jar包后,不可能再去改配置文件了,不然需要重新改,重新打包;
  • 单独再写一个配置文件,通过在命令行配置的方式,可以加载该配置文件;
  • 单独写的配置文件,和项目中的配置文件共同起作用,形成互补作用;
<!--优先级最高-->
java -jar springboot-1.0-SNAPSHOT.jar --spring.config.location=D:\zte\boot\config\application.yaml

三、外部配置加载顺序

  1. 命令行参数(打包好的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;
  1. jar包外部的application-{profile}.application 或者 application.yaml(带spring.profile);
  2. jar包内部的application-{profile}.application 或者 application.yaml(带spring.profile);
  3. jar包外部的application.yaml 或者 application.yaml(不带spring.profile);
  4. jar包内部的application.yaml 或者 application.yaml(不带spring.profile);
    由外而内,先带profile,再不带profile
相关标签: 4.2 SpringBoot