SpringBoot的配置文件

(一)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是树形的,所以太复杂就会导致太乱

相关推荐
天天向上杰1 分钟前
简识JVM的栈帧优化共享技术
java·jvm
方圆想当图灵20 分钟前
缓存之美:万文详解 Caffeine 实现原理(下)
java·redis·缓存
栗豆包34 分钟前
w175基于springboot的图书管理系统的设计与实现
java·spring boot·后端·spring·tomcat
等一场春雨1 小时前
Java设计模式 十四 行为型模式 (Behavioral Patterns)
java·开发语言·设计模式
萧若岚2 小时前
Elixir语言的Web开发
开发语言·后端·golang
Channing Lewis2 小时前
flask实现重启后需要重新输入用户名而避免浏览器使用之前已经记录的用户名
后端·python·flask
Channing Lewis2 小时前
如何在 Flask 中实现用户认证?
后端·python·flask
酱学编程2 小时前
java中的单元测试的使用以及原理
java·单元测试·log4j
我的运维人生3 小时前
Java并发编程深度解析:从理论到实践
java·开发语言·python·运维开发·技术共享
一只爱吃“兔子”的“胡萝卜”3 小时前
2.Spring-AOP
java·后端·spring