spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序

1配置文件占位符

RandomValuePropertySource:配置文件中可以使用随机数

${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}

配置

person.age=${random.int}

 

属性配置占位符

person.last-name=李四
person.age=12
person.dog.name=${person.last-name:哈巴}_狗

如果last-name没有值,默认使用哈巴。

 


person.age=12
person.dog.name=${person.last-name:合并}_狗
 

如果last-name没有设置,默认为本身字符串${person.last-name:合并}_狗

 

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第1张图片

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第2张图片

 

 

 

5 Profile(配置多环境的情况,读取哪个配置)

1、多Profile文件
格式:application-{profile}.properties/yml:
案例: application-dev.properties、application-prod.properties

加载的时候读取application.properties的配置,里面有设置激活哪个(dev,prod)的文件 。

案例

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第3张图片

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第4张图片

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第5张图片

 

 

2、yml支持多文档块方式

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第6张图片

 

 

 

3、激活指定profile
1、在配置文件中指定 spring.profiles.active=dev

这个就是刚刚前面讲的1,2内容


2、命令行:
java -jar 项目名.jar --spring.profiles.active=dev或者在虚拟机上配置--spring.profiles.active=dev。

 

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第7张图片

案列:下面我们配置上激活的8083端口,当我们使用上面的命令是,启动的端口变为8082

server:
#默认设置8081端口
  port: 8081
spring:
  profiles:
#激活prod设置,会覆盖默认设置的相同属性
    active: prod

---
server:
  port: 8082
spring:
  profiles: dev


---

server:
  port: 8083
spring:
  profiles: prod


3、虚拟机参数;
-Dspring.profiles.active=dev

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第8张图片

 

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第9张图片

 

 

3 配置文件加载位置

1 SpringBoot会从下面四个位置全部加载主配置文件application.properties或者application.yml文件;优先级由高到底,高优先级的配置会覆盖低优先级的配置,互补配置;
–file:./config/..../application.properties
–file:./..../application.properties
–classpath:/config/..../application.properties
–classpath:/..../application.properties

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第10张图片

 

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第11张图片

2通过spring.config.location来改变默认的配置文件位置,指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;


java -jar 包名.jar  -spring.config.location=配置文件

案列

H:/java/jdk1.8.0_181/bin/java -jar spring-book-config-0.0.1-SNAPSHOT.jar --spring.config.location=H:/test/application.properties

配置文件配的是8082端口,项目中配的是8081端口,发布后实际是8082端口。

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第12张图片

spring-Boot 配置文件2+配置文件占位符+Profile+配置文件加载位置+外部配置加载顺序_第13张图片

7、外部配置加载顺序

SpringBoot也可以从以下位置加载配置; 优先级从高到低,高优先级的配置覆盖低优先级的配置,互补配置。

1.命令行参数(发布时候使用)
 java -jar 包名.jar --配置项=值   空格    --配置项=值.........

案列

java -jar spring-boot-02-config.jar --server.port=8087 --server.context-path=/abc


2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量

5.RandomValuePropertySource配置的random.*属性值

由jar包外向jar包内进行寻找;
优先加载带profile(profile:就是前面讲的激活文件)

6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

再来加载不带profile
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

案例:

java -jar 包名.jar  -spring.config.location=配置文件

读取jar包外的文件,覆盖jar内部的相同属性。

 

10.@Configuration注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性

 

 

你可能感兴趣的:(SpringBoot)