Spring Boot 配置文件,你了解多少呢?

目录

1、为什么需要配置文件

2、配置文件的两种格式

2.1、.properties

2.1.1、properties语法格式

 2.1.2、读取配置文件

 2.1.3、properties缺点

 2.2、.yml

 2.2.1、yml基本语法

2.2.2、yml配置不同数据类型及null

2.2.3、yml配置读取

 2.2.4、测试读取null和读取不存在的配置结果是否相同

 2.2.5、配置内容中的值【单双引号】

2.2.6、配置对象

2.2.7、配置集合

2.2.8、yml的优点

3、Properties  VS  yml

 不同环境中不同的配置文件


1、为什么需要配置文件

项目中所有重要的数据都是在配置文件中配置的,比如:

  • 数据库的连接信息(包含用户名和密码的设置)
  • 项目的启动端口
  • 第三方系统的调用秘钥等信息
  • 用于发现和定位问题的普通日志和异常日志等

        如果没有配置信息,SpringBoot项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,退一步将,我们不使用配置文件,就在代码中配置需要的信息,那几万行的代码中,需要的配置的信息太多了,如果我们想修改配置信息,总不可能一个一个去找,然后再修改吧~那早晚得出现差错~所以配置文件的作用是非常大滴!


2、配置文件的两种格式

2.1、.properties

Spring Boot 配置文件,你了解多少呢?_第1张图片

 properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件

2.1.1、properties语法格式

properties是以键值的形式配置的,key和value之间用“=”连接:

Spring Boot 配置文件,你了解多少呢?_第2张图片

 注:配置文件中,注释信息使用“#”

点击main方法运行:

Spring Boot 配置文件,你了解多少呢?_第3张图片

 2.1.2、读取配置文件

有时候想读取配置信息中的内容,怎么做呢?

使用@Value来读取配置中的对象

Spring Boot 配置文件,你了解多少呢?_第4张图片

运行后查看结果:

Spring Boot 配置文件,你了解多少呢?_第5张图片

         打印出问题了,我们想要的是server.port中的value值,而打印的确实server.port,也就是@Value注解中的字符串,为什么呢?因为Java中双引号引起来的就是字符串呀~含义就是:将“server.port”赋值给port变量。我们在这里我们需要加工一下:

Spring Boot 配置文件,你了解多少呢?_第6张图片

加上一个$符,和花括号 ,运行:

Spring Boot 配置文件,你了解多少呢?_第7张图片

 2.1.3、properties缺点

代码冗余度高

Spring Boot 配置文件,你了解多少呢?_第8张图片


 2.2、.yml

yml是yaml的缩写,全称:Yet Another Markup Language——“另一种标记语言”

这个项目中没有现成,需要我们自己去创建一个,名字也必须是application后缀是.yml

Spring Boot 配置文件,你了解多少呢?_第9张图片

 2.2.1、yml基本语法

key: value

Spring Boot 配置文件,你了解多少呢?_第10张图片

这个空格不能省略!!! 

代码:

Spring Boot 配置文件,你了解多少呢?_第11张图片

yml 是一种树形结构的配置文件

2.2.2、yml配置不同数据类型及null

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~

2.2.3、yml配置读取

与properties相同:

Spring Boot 配置文件,你了解多少呢?_第12张图片

 运行:

Spring Boot 配置文件,你了解多少呢?_第13张图片

 2.2.4、测试读取null和读取不存在的配置结果是否相同

Spring Boot 配置文件,你了解多少呢?_第14张图片

将N2的注释去掉后,再去运行,会发现程序出错:

 2.2.5、配置内容中的值【单双引号】

yml:

string:
  s1: 你好,世界
  s2: '你好,世界'
  s3: "你好,世界"

Spring Boot 配置文件,你了解多少呢?_第15张图片

 在这里看似是没有区别的

那我们修改一下:

yml:

string:
  s1: 你好\n世界
  s2: '你好\n世界'
  s3: "你好\n世界"

Spring Boot 配置文件,你了解多少呢?_第16张图片

从上述可知:

  • 字符串默认不用加单引号或双引号
  • 单引号会转义特殊字符,特殊字符只是一个普通的字符串
  • 双引号不会转义特殊字符,特殊字符会作为本身想表达的意思 

2.2.6、配置对象

yml中配置对象,如下:

student:
  id: 1
  name: 张三
  age: 19

或者:

student: {id: 1,name: 张三,age: 19}

读取配置对象:

使用@ConfigurationProperties来读取

Spring Boot 配置文件,你了解多少呢?_第17张图片

2.2.7、配置集合

#方法一:
dbtypes:
  name:
    -mysql
    -sqlserver
    -db2
#方法二:
dbtypes2: {name: [mysql,sqlserver,db2]}

 读取:

Spring Boot 配置文件,你了解多少呢?_第18张图片

2.2.8、yml的优点

  • yml是一个可读性高,写法简单、易于理解,语法类似于JSON语言
  • yml支持更多的数据类型,他可以简单表达数组、散列表、标量等数据状态
  • yml使用空白符缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、和各种配置文件
  • yml支持更多的编程语言,如:Java、GoLang、PHP、Python、Puby、JavaScript、Perl

3、Properties  VS  yml

  •  properties是以key=value形式配置的键值类型的配置文件
  • yml使用类似json格式的树形配置方式进行配置的,yml层级之间使用换行缩进的方式配置,key: value之间空格不能省略
  • properties是早期并且默认的配置文件的格式,存在一定的冗余数据
  • yml可以很好的解决冗余数据的问题
  • yml通用性更好,支持更多语言,支持更多的数据类型
  • 一般情况下,一个项目只会有一种配置文件,要么是yml,要么是properties,采用一种配置文件,可以更好的维护
  • 一个项目中,存在两种配置文件时,properties配置稳健的优先级更高,加载完properties后,也会加载yml,但两种配置文件中出现重复配置,会以properties为准
  • properties配置文件中,如果有中文,可能会出现乱码情况,而yml中则进行了优化,不会乱码

 不同环境中不同的配置文件

spring:
  profiles:
    active: dev

1、创建不同环境的配置⽂件:
application-dev.yml
application-prod.yml

Spring Boot 配置文件,你了解多少呢?_第19张图片
2、在 application.yml 中设置运⾏环境

spring:
  profiles:
    active: dev

好啦,本期结束啦~下期见~

你可能感兴趣的:(spring,boot,java,spring)