(一)Spingboot配置文件的概念
1.配置文件的作用
配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当我们启动程序时,应用程序会从配置文件中读取数据,加载并运行,这样更方便我们去管理数据。
我们来说一下什么是硬编码,简单理解就是将数据直接写到我们代码中,也就是我们说的代码写死
同时使用配置文件可以使程序完成用户和应用程序的交互,或者应用程序与其他应用程序的交互
2.Springboot配置文件
Springboot支持并且定义了配置文件的格式
配置文件中有很多项目或者框架的配置信息:
1)项目的启动端口
2)数据库的连接信息
3)第三方系统的调用密钥等
4)用于发现和定位问题的一些普通日志和报错日志
注:我们使用了Spring这么久,都知道springboot内置了Tomcat服务器,默认端口号使8080,那如果我们想修改就可以通过配置文件来进行更改,即是修改默认端口号
(二)入手配置文件
我们说可以对默认的端口号进行更改,那就来看一下是如何更改的吧
首先我们要找到写配置文件的位置
这个aipplication.properties就是配置文件,我们就在这里修改我们配置文件的信息
这样我们的端口号就被修改为9090了,以后访问这个进程就需要使用9090的端口
(三)配置文件的格式
我们Spring Boot的配置文件有三种格式
1.application.properties
2.application.yml
3.application.yaml
这里的yml就是yaml的缩写,两者的使用方式一样
当我们进程启动时,springboot就会自动从classpath路径找到并且加载application.properties和application.yml,我们application.properties类型的配置文件比较老,是创建springboot项目是默认的文件格式,yml是属于新款
注意实际上我们的.properties和.yml是可以存在同一个项目中,但是当两者共存时,虽然两个配置文件都会加载,但是如果配置文件间有冲突,我们需要以.properties为主,也就是旧版的优先级更高。但是我们实际业务中,还是要统一配置文件的格式,这样可以更好的维护我们的配置文件,减少冲突
1.application.properties配置文件说明
.properties是我们springboot项目默认的配置文件,他的语法也非常简单
1)基本语法
我们就拿之前写过的举例子,properties是用键值对的形式配置的,key与value用=来连接
如果我们想添加注解,我们需要使用#
2)读取配置文件
在项目中,如果我们要主动读取配置文件中的内容,可以使用@value来实现,并且注解使用${}的格式读取
3)properties缺点
properties配置是用key-value形式存储的,但是properties配置文件会有很多冗余信息,比如:
这些信息都是重复的,那我们有没有可能把他们提取出来,然后在低下分组,那就需要进行yml配置文件的格式化了
2.yml配置文件说明
1)yml基本语法
与properties一样,他也是key-value结构的,但是yml是树形结构的配置文件
他的key与value是使用: 的方式组成的,是冒号空格,空格不可以省略
我们说可以减少冗余信息,那我们来看看减少了之后是什么样子
2)yml配置不同数据类型
我们可以用yml配置字符串,布尔值,整数,浮点数,或者空(~在这里代表空)和空字符串(不写就可以,但是不直观,我们可以手动加上""比较明显)
3)yml配置读取
yml的配置读取与properties是一样的都是使用@value("${}")的方式来读取
但是我们在使用的时候需要把: 转换称.也就是properties的形式
注意:我们字符串默认是不用加引号的,如果加引号会有特殊含义
如果字符串加上单引号会使转义字符比如\n失去作用,如果是""就不会
4)配置对象
我们还可以在yml中配置一个对象
但是这样就不可以使用@Value来读取配置文件的对象了,需要使用另一个注解来读取
这样我们就可以完成配置文件的访问
5)配置list和map
配置list也很简单如下图:
而且读取与对象一样都是通过@ConfigruationProperties来读取
配置map
读取对象也是类似的
yml的优缺点:
优点:可读性高,比较简单,也方便理解,可以表达对象,list,map等更多数据类型,同时支持更多的变成语言
缺点:不适合写太复杂的配置文件,因为yml是树形的,所以太复杂就会导致太乱