SpringBoot配置文件

  • SpringBoot支持两种类型配置文件:.yml 和 .properties 为后缀的配置文件。
  • Spring默认读取全局的配置文件为:application.properties 和 application.yml

YML语法:

1、基本语法:key:  value

key:(空格)value     表示一对键值对,且key和value之间必须有空格,且key、value都是大小写敏感的。

YML语法是以缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级。

server:
    port: 8080
    path: /hello/springboot

2、值得写法:

1、普通值——数字、字符串、布尔

key: value     直接将用目标值替换value即可。

  • 字符串默认不用加单引号或双引号;
  • 双引号,会转译字符串里面的特殊字符,特殊字符会作为转译后的意思输出:“abc \n 123”,  输出: abc 换行 123
  • 单引号,将字符串原样输出,不转译字符串内的特殊字符: “abc \n 123”,输出:abc \n 123

2、对象、Map

key: value  key标识对象或集合名 ,value用是一个k: v对

写法1:

map:
    key1: value1
    key2: value2

写法2:

map: {key1: value1,key2: value2}

3、数组——list、set

写法1:

listName:
    - value1
    - value2
    - value3

写法2:

listName: [value1,value2,value3]

.properties配置文件:

.properties配置文件格式:key=value

.properties文件与.yml文件格式上的区别是:

  • .properties文件属性赋值用等到链接,key=value
  • .properties文件的层级关系用parent.child.grandson表示,如school.class.sudent.name=张三

配置文件占位符:${}

在处理配置文件时,可以使用占位符${},动态给属性赋值:

1、获取随机数:${ramdom.value}、${ramdom.int}、${ramdom.long}、${ramdom.int(10)}、${ramdom.int[100,1000]}

person.name=张三${random.uuid}

2、获取其他属性的值,如果没有可以指定默认值

person.name=张三
person.name.china=${person.name}
person.name.english=${person.english-name:zhangsan}   # 指定默认值

多配置文件切换和文档块:

SpringBoot默认加载的配置文件名是:application.properties/yml,如果要添加多个配置文件可以使用文件名为application-(profile).properties/yml的配置文件。如果要让SpringBoot能加载这些配置文件,需要激活自定义配置文件。激活方式:

  1. 在默认配置文件中添加配置: spring.profiles.active=dev   (dev是applicaition- 后面的自定义文件名部分)
  2. 命令行方式: java -jar 项目名 --spring.profiles.active=dev
  3. 虚拟机参数指定: -Dspring.profile.active=dev

此外yml文件还支持文档块的方式:application.yml可以通知配置多个环境下的配置信息

SpringBoot会先读取第一个文档块,第一个文档块中的spring.profiles.active属性用于指定激活下面那个文档块,而下面两个文档块中的spring.profiles属性,用于标识当前文档块,以便于在第一个文档块中激活。

SpringBoot配置文件加载位置和外部配置加载顺序:

SpringBoor启动时会扫描一下位置的application.properties/yml文件,作为配置文件:

  •  -file:./config/
  •  -file:./
  •  -classpath:/config/
  •  -classpath:/

优先级由高到低,高优先级的配置会覆盖低优先级的配置;配置文件之间的关系是互补配置,高优先级文件中已经加载的属性不会再加载,高优先级中没有配置的属性而低优先级配置的属性,会继续加载。也可以使用命令行参数,指定spring.cofig.location属性来指定要加载的配置文件,指定的配置文件(优先级最高)和默认配置文件会共同器作用:

java -jar 项目名 --spring.config.location=E:/application.properties

SpringBoot会加载很多地方的配置:命令行参数、java系统属性、系统环境变量等等,来看一下加载顺序,优先级由高到底:

  1. 命令行参数,多个配置用空格分隔:java -jar 项目名 --server.port=8080 --server.path=/path
  2. 来自java:comp/env 的 JNDI 属性
  3. Java系统属性
  4. 操作系统环境变量
  5. RandomValuePropertySource配置的random.*属性值
  6. jar包外application-{profile}.properties/yml文件,带spring.profile属性
  7. jar包内的application-{profile}.priperties/ym文件,带spring.profile属性
  8. jar包外的application.properties/yml 文件,没有spring.profile属性
  9. jar包内的application.properties/yml文件,没有spring.profile属性
  10. @configuration注解类上的@propertySource   //指定加载配置文件
  11. 通过SpringApplication.setDefaultProperties指定的默认属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值