SpringBoot–基础–02–加载配置
代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/springboot-learn/springboot-1
1、Profile(配置多环境的情况,读取哪个配置)
1.1、格式
application-{profile}.properties/yml
1.2、案例1–配置文件的方式
application-dev.yml
application-prod.yml
- 加载的时候读取application.yml的配置,里面有设置激活哪个(dev,prod)的文件。
- 这里我们激活的是dev的配置文件,加载结果如下
1.2、案例2–多文档块方式
spring:
profiles:
active: dev1
# 多文档标识
---
server:
port: 8083
spring:
profiles: dev1
# 多文档标识
---
server:
port: 8085
spring:
profiles: dev2
1.3、激活指定profile
1.3.1、配置文件指定
1. spring.profiles.active=dev
1.3.2、命令行指定
-
java -jar 项目名.jar --spring.profiles.active=dev
--spring.profiles.active=dev2
-
虚拟机上配置
-Dspring.profiles.active=dev
2、Spring Boot 配置优先级
以下是常用的 Spring Boot 配置形式及其加载顺序(优先级由高到低),所有形式的配置都会被加载,当存在相同配置内容时,高优先级的配置会覆盖低优先级的配置;存在不同的配置内容时,高优先级和低优先级的配置内容取并集,共同生效,形成互补配置。
- 命令行参数
1. java -jar {Jar文件名} --{参数1}={参数值1} --{参数2}={参数值2} 2. java -jar app.jar --server.port=8081 --server.servlet.context-path=/bcb
- 来自java:comp/env的JNDI属性
- Java 系统属性
System.getProperties()
- 操作系统环境变量
- RandomValuePropertySource配置的random.*属性值
- 配置文件(YAML文件,Properties文件)
java -jar 包名.jar -spring.config.location=配置文件
- @Configuration 注解类上的 @PropertySource 指定的配置文件
- 通过SpringApplication.setDefaultProperties 指定的默认属性
3、配置文件
Spring Boot 启动时,会自动加载 JAR 包内部及 JAR 包所在目录指定位置的配置文件(Properties 文件、YAML 文件),下图中展示了 Spring Boot 自动加载的配置文件的位置及其加载顺序,同一位置下,Properties 文件优先级高于 YAML 文件。
3.1、说明如下
- /myBoot:表示 JAR 包所在目录,目录名称自定义;
- /childDir:表示 JAR 包所在目录下 config目录的子目录,目录名自定义;
- JAR:表示 Spring Boot 项目打包生成的 JAR;
- 其余带有"/"标识的目录的目录名称均不能修改。
- 红色数字:表示该配置文件的优先级,数字越小优先级越高。
3.2、配置文件的优先级顺序,遵循以下规则
- 先加载 JAR 包外的配置文件,再加载 JAR 包内的配置文件;
- 先加载 config 目录内的配置文件,再加载 config 目录外的配置文件;
- 先加载 config 子目录下的配置文件,再加载 config 目录下的配置文件;
- 先加载 appliction-{profile}.properties/yml,再加载application.properties/yml;
- 先加载 .properties 文件,再加载 .yml 文件。