Spring Boot配置(三)

一、配置文件

  • Spring Boot使用一个全局得配置文件。作用:修改SpringBoot得Zion给配置默认值

    • application.properties
    • application.yml
  • 配置文件放在src/main/resources目录或者类路径/config下

    • springboot启动会扫描一下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
      -file:/config/
      -file:/
      -classpath:/config/
      -classpath:/
    • 优先级由高到低,高优先级的配置会覆盖低优先级的配置;
    • Springboot会从这四个位置全部加载主配置文件;互补配置
    • 还可以通过spring.config.location 来改变默认的配置文件位置
  • .yml是YAML(YAML Ain’t Markup Language)语言得文件,以数据为中心,比json、xml等更适合做配置文件

1
2
server:
port:8080
  • 全局配置文件得可以对一些默认配置值进行修改

二、YAML 语法:

1、基本语法

  • k:(空格)v:表示一堆键值对(空格必须有):
  • 以空格得缩进来控制层级关系;只要是左对齐得一列数据,都是同一个层级的
1
2
3
server:
port:8081
path:/hello
  • 属性和值也是大小写敏感

2、值得写法

字面量:普通得值(数字,字符串,布尔)

  • **k: v:**字面直接来写;
    • 字符串默认不用加上单引号或者双引号;
    • “”:双引号;不会转义字符串里面得特殊字符;特殊字符会作为本身想表示得意思
      • name:“zhangsan \n lisi”:输出;zhangsan 换行 lisi
    • ’ ':单引号;会转义特殊字符,特殊字符最终只会是一个普通得字符串数据
      • name:“zhangsan \n lisi”:输出;zhangsan \n lisi

对象、Map(属性和值)(键值对):

  • **k: v:**在下一行来写对象的值和属性的关系;注意缩进
    • 对象还是k:v的方式
    • v:(一定要加空格)
1
2
3
friends:
lastName: zhangsan
age: 20

行内写法:

1
friends:(lastName:zhangsan,age:18)

数组(List、Set):

用 - 值表示数组中的一个元素

1
2
3
4
pets:
- cat
- dog
- pig

行内写法

1
pets:[cat,dog,pig]
  • 如果使用配置文件赋值需要@ConfigurationProperties(prefix=“对象”)
  • 同时pom中导入配置文件处理器
1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
  • 占位符${引用其他}

Profile

1、多Profile文件
  • 我们在主配置文件编写的时候,文件名可以是application-{profile}.properties.yml
    • 默认使用application.properties.yml
2、yml支持多文档块方式
  • 利用 —分割块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server:
port:8081
spring:
profiles:
active:prod
---
server:
port:8082
spring:
profiles:dev
---
server:
port:8084
spring:
profiles:prod
  • 结果:激活8084

#####3、激活指定profile

  • 在配置(application.properties.yml)文件中指定 Spring.profiles.active=XXX
  • 命令行:
    • 运行加参数–spring.profiles.active=XXX
  • 虚拟机参数;
    • -Dspring.profiles.active=dev