作者简介:大家好,我是未央;
博客首页:未央.303
系列专栏:JavaEE进阶
每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!
文章目录
前言
一、配置文件概述
1.1 配置文件的作用
1.2 配置文件的格式
二、application.properties 配置文件
2.1 基本语法
2.2 读取配置文件
三、application.yml 配置文件
3.1 基本语法
3.2 读取yml中的配置
1、yml配置的简单读取
2、读取yml 配置中不同数据类型及 null
3.读取yml配置文件的补充\
3.3 yml配置对象
3.4 yml配置集合
四、Properties VS yml 总结和补充
4.1 关于properites的乱码问题
总结
前言
本节课我们将开始进入到springboot的学习当中;主要介绍springboot的配置文件;主要有application.properties 配置文件 和 application.yml 配置文件两种;
一、配置文件概述
1.1 配置文件的作用
整个项目中所有重要的数据都是在配置文件中配置的;
比如:
1、数据库的连接信息(包含用户名和密码的设置)
2、项目的启动端口
3、第三方系统的调用密钥等信息
4、用于发现和定位问题的普通日志 和 异常日志 等。
5、还可以配置 日志的级别(规定只显示达到某个级别的日志),以及日志的持久化存储。
想象一下:
如果没有配置信息,那么 Spring Boot 项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是非常重要的;
配置文件还有一个优点:
配置文件可以设置 开发环境 和 测试环境,两个配置文件。
然后呢,在运行打包的时候,通过修改一个变量,就可以指定 当前项目 “走”哪一个配置文件。
所以,配置文件之间是可以并存的!
意思就是:
可以将两个,或两个以上的配置文件(开发的,测试的,运维的),项目上线的时候,我们只需要改一个参数,改一个名字。然后,项目中所有的内容,全部都会走 另一个配置文件。非常方便!
补充:
配置文件的分类,里面的内容可以分为两个类:
- 1、系统级别的
- 2、自定义级别的
1.2 配置文件的格式
Spring Boot 配置文件主要分为以下两种格式:
- 1、.properties
- 2、.yml
【文件的后缀代表着文件的格式;配置文件也是如此!!!】
至于为什么要有两种格式?
这两者之间的关系,就像前面讲Bean 作用域 和 生命周期中的 @PostConstruct 与 init- method 之间的关系一样。
两者的功能是一样的,但是!是来自于 两个不同时间段 的 产物。最早出现的配合文件格式是 .properties。
然后,在后期的使用中发现: properties 存在着一些缺陷。
那么,自然就会产生一个想法:properties 该怎么去优化?
于是,.yml 格式的配置文件,就诞生了。
这就和 maven 和 gradle 之间的关系一样。
gradle 是 maven 的升级版。
我们的 .yml格式的配置文件,就是 .properties格式配置文件 的 升级版。
注意:
前面讲过:一个项目中,可以存在多个配置文件。
即:配置文件之间是可以共存的!也就是说:我们可以直接在项目中传建其他的配置文件,格式可以不同
二、application.properties 配置文件
2.1 基本语法
语法格式:
而且注意:
在填写完后面的 value 值 之后,也不能加上一个空格。 会出事!!!
后果:
设置端口号:
另外,我们还可以自定义键值对。【上面的是系统级别的配置】
因为我们已经把项目的端口号改成了9090,所有你再启动项目的时候端口号就变了
2.2 读取配置文件
到了 Spring Boot 时代,几乎所有的功能,都可以通过 注解来搞定。读取配置文件也是一样的;
可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取.在配置文件中用户可自定义各自类型的数据
三、application.yml 配置文件
介绍:
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。yml 是⼀个可读性⾼,易于理解,⽤来表达数据序列化的格式。
它的语法和其他⾼级语⾔类似(与 json 格式类似,键值对之间使用冒号+空格,进行分隔),并且可以简单表达清单(数组)、散列表,对象,标量,布尔,int等数据形态,甚至连 null 都可以设置!!!
它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
yml 最⼤的优势是
可以跨语⾔,不止是 Java 中可以使⽤。golang、python 都可以使⽤ yml 作为配置⽂件。
总结下来, yml 配置文件一共有三个优点:
1、写法简单
2、支持多种数据类型
3、支持跨语言上述这三个优点,都是 properties 配置文件所不具备的。
3.1 基本语法
yml 是树形结构的配置⽂件,它的基础语法是“key: value”,
注意: key 和 value 之间使⽤英文冒号加空格的方式组成的,其中的空格不可省略。
上面我们说了一个项目中,可以存在多个配置文件。
那么我们可以直接在项目中创建其他的配置文件,格式可以不同;
当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以properties 为主(忽略 yml 中的配置)。
但其实与上面的application.properties相比,.yml配置文件还是挺好用的。
3.2 读取yml中的配置
1、yml配置的简单读取
这个和对properitices的读取是相同;
2、读取yml 配置中不同数据类型及 null
3.读取yml配置文件的补充\
先来看一个例子:
yml字符串修饰符的问题:
3.3 yml配置对象
我们可以在 yml 中配置对象,如下配置:
那么怎么读取我们yml中的配置文件呢?
可能你会说:还用@Value("${mykey.key}")不行吗?
答案是不行,我们要用的专门的类做这一件事:
3.4 yml配置集合
首先我们在yml配置文件里把集合配置上:
那么接下来我们看看是怎么读取集合的 :
集合的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,创建一个类并在该类中设置一个集合属性,具体实现如下:
四、Properties VS yml 总结和补充
1、properties 是以 key=value 的形式配置的键值类型的配置⽂件;
yml 使用的是类似 json 格式的树形配置⽅式进⾏配置的.
key 和 value 之间使⽤“: ”(英⽂)冒号加空格的⽅式设置,并且空格不可省略;
yml 层级之间使用换行缩进的方式配置。
2.properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据;
使⽤ yml 可以很好的解决数据冗余的问题。
3.yml 通用性更好,支持更多语言,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置文件作为 Java 和 Go 的共同配置文件。
4、yml 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件。
当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以properties 为主(忽略 yml 中的配置)。
4.1 关于properites的乱码问题
原因:
这是因为 application.properties 是属于早期的配置文件,而早期的 配置文件是不支持中文的。
而 yml 是天生就支持中文的(utf8)。
要想 application.properties 支持中文,需要进行配置。
配置方法:
总结
今天的内容就介绍到这里,我们下一期内容再见!!!!!!!