SpringBoot---1.配置文件


一、配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。
默认配置文件名称:application
同一级目录下优先级为:properties>yml>yaml

二、yaml(简洁,以数据为核心)

YAML全称是YAML Ain't Markup language。YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入。比如:C/C++,Ruby,Python,Java,Perl,C#等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
YAML文件的扩展名可以使用.yml或者.yaml。

基本语法:

  1. 大小写敏感
  2. 数据值前边比如有空格,作为分隔符
  3. 使用缩进表示层级关系,相同缩进表示同一级
  4. 缩进时不允许使用Tab键,只允许使用空格(各个系统Tab对应的空格数目可能不同,导致层次混乱)。
  5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
  6. #表示注释,从这个字符一直到行尾,都会被解析器忽略。

数据格式:

参数引用:

三、读取配置文件内容

1.@Value

注:复杂类型(Map、List)无法封装

2.Environment

3.@ConfigurationProperties

四、profile

我们在开发spring boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是用来完成不同环境下,配置动态切换功能的。

1.profile配置方式

(1)多profile文件方式:提供多个配置文件,每个代表一种环境

application-dev.properties/yml 开发环境
application-test.properties/yml 测试环境
application-pro.properties/yml 生产环境

(2)yml多文档方式:用--分隔不同配置

2.profile激活方式

  • 配置文件:在配置文件中配置:spring.profiles.active=dev
  • 虚拟机参数:在VM options指定:-Dspring.profiles.active=dev
  • 命令行参数:java -jar xxx.jar --spring.profiles.active=dev

优先级:命令行>虚拟机>配置文件

五、内部配置加载顺序

按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容,形成“互补配置”。

六、外部配置加载顺序

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

java -jar xxx.jar --server.port=8087 --server.context-path=/abc

多个配置用空格分开【--配置项-值】;
由jar包外向jar包内进行寻找(6-9);
优先加载带profile(6-7);
再来加载不带profile(8-9)

参考链接
【1】https://docs.spring.io/spring-boot/docs/current/reference/html/documentation.html#documentation