5.SpringBoot 配置文件

news/2024/10/20 18:18:58/

文章目录

  • 1.配置文件作用
  • 2.配置文件格式
    • 2.1项目中同时存在两种配置文件
    • 2.2application.properties
      • 2.2.1 application.properties语法格式
      • 2.2.2获取自定义配置项
    • 2.3 application.yml
      • 2.3.1 application.yml语法格式
        • 2.3.1.1单双引号区别
        • 2.3.1.2和application.properties格式对比:
        • 2.3.1.3 yml配置对象
        • 2.3.1.4 yml配置集合
        • 2.3.1.5yml配置map
      • 2.3.2获取自定义配置项key
      • 2.3.3获取多个自定义配置项
      • 2.3.4yml优缺点

大家好,我是晓星航。今天为大家带来的是 SpringBoot 配置文件 相关的讲解!😀

1.配置文件作用

1、数据库的连接信息(包含用户名和密码的设置)
2、项目的启动端口
3、第三方系统的调用密钥等信息
4、用于发现和定位问题的普通日志 和 异常日志 等。
5、还可以配置 日志的级别(规定只显示达到某个级别的日志),以及日志的持久化存储

2.配置文件格式

Spring Boot 配置文件有以下三种:

  • application.properties
  • application.yml
  • application.yaml

properties优先级>yml优先级>yaml优先级

2.1项目中同时存在两种配置文件

在企业中我们常用application.properties或application.yml。通常只使用一个文件。

一个项目中同时存在application.properties 和 application.yml,那么我们idea会遵循哪一个配置文件呢?

image-20240318154554415

application.properties:

image-20240318154842612

application.yml:

image-20240318154915715

idea运行结果:

image-20240318154931439

注意看此时端口号为9090,和我们application.properties中指定的端口号一样。

得出结论:

如果项目中,同时存在properties和yml配置文件,properties的优先级更高
同时存在时,两个文件都生效,如果两个文件中,都包含同一个配置,以properties为主

那么如果properties中无配置,yml中指定端口号配置会生效吗?

application.properties:

image-20240318155219299

application.yml:

image-20240318155246591

idea运行结果:

image-20240318155301137

可以发现当application.properties中无配置时,application.yml中的配置文件就会生效,他们的关系就和大当家与二当家一样,当大当家和二当家都有同一个命令时一定是听大当家的。但是大当家没有发号施令,而二当家发号施令了,此时大家就会听二当家的。

2.2application.properties

2.2.1 application.properties语法格式

image-20240318160100177

key value的形式,以 = 分割
key的格式建议小写,单词之间使用.分割

2.2.2获取自定义配置项

application.properties:

image-20240318161017893

PropertiesController.java:

image-20240318161103165

idea运行结果:

image-20240318161151732

去掉$符号之后,就相当于赋值了一个普通的字符串

image-20240318161309957

2.3 application.yml

2.3.1 application.yml语法格式

1、大小写敏感
2、使用缩进表示层级关系
3、禁止使用tab缩进,只能使用空格键
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
5、使用#表示注释
6、字符串可以不用引号标注
7、: 冒号后面必须存在一个空格
8、null使用 ~ 来表示
9、空字符串 key后面直接空着就行,推荐用单引号或者双引号括起来

image-20240318163315874

2.3.1.1单双引号区别

image-20240318190155548

例如此处的 \n 单引号就没有换行,还是解析成了\n。而双引号就讲\n解析成了换行。

2.3.1.2和application.properties格式对比:

image-20240318161639353

注意:

image-20240318161713572

Value(值)前面的空格不可省!不然会导致编译无效

image-20240318161949478

image-20240318162005534

此时端口号还是8080

当我们在Value值前或冒号后加上 空格 之后,我们此时端口号是多少呢?

image-20240318162044632

image-20240318162138567

可以看到加上了空格之后,我们的端口号成功改为了9092

2.3.1.3 yml配置对象

image-20240318191914973

2.3.1.4 yml配置集合

配置内容:

image-20240318192037469

配置内容读取:

image-20240318192054986

image-20240318192104613

2.3.1.5yml配置map

DBType.java:

image-20240318192503723

application.yml:

image-20240318192521834

idea运行输出结果:

image-20240318192539534

2.3.2获取自定义配置项key

application.yml:

image-20240318164312238

application.yml:

image-20240318164241452

idea运行结果:

image-20240318164210023

2.3.3获取多个自定义配置项

我们此处传多个key值

image-20240318164943260

这里我们使用到了 @PostConstruct 这个注解,这个注解主要是用来初始化配置的一个注解方法

image-20240318165036706

注:此时key3是整型类型,我们此处没有报错,因为我们传入的值确实是1024 - 一个整型。 如果我们类型不对等的话一定会发生报错的

idea运行结果:

image-20240318165237918

可以看到此时初始化的值已经打印在idea上,且端口还是8080.

2.3.4yml优缺点

优点:

  1. 可读性高,写法简单,易于理解
  2. 支持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态,
  3. 支持更多的编程语言,不止是]ava中可以使用,在Golang,Python,Ruby, JavaScript中也可以使用

缺点:

  1. 不适合写复杂的配置文件
  2. 对格式有较强的要求(一个空格可能引发一场血案)

3.验证码案例

image-20240318202825569

image-20240318202830405

  1. 不适合写复杂的配置文件
  2. 对格式有较强的要求(一个空格可能引发一场血案)

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘


http://www.ppmy.cn/news/1435718.html

相关文章

用html写一个窗口风景动画

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>窗边风景动画</title><link rel"stylesheet" href"./style.css"> </head> <body><!-- 窗户 -->&l…

Node.js -- fs模块

文章目录 1. 写入文件1.1 写入文件1.2 同步和异步1.3 文件追加写入1.4 流式写入1.5 文件写入的场景 2. 读取文件2.1 异步和同步读取2.2 读取文件应用场景2.3 流式读取2.4 fs 练习 -- 文件复制 3. 文件重命名和移动4. 文件删除5. 文件夹操作5.1 创建文件夹5.2 读取文件夹5.3 删除…

数据分析:筛选多组交集特征

介绍 有时候需要在多个组间筛选它们的交集特征&#xff0c;本文利用R语言实现该目的 加载R包 library(UpSetR) library(tidyverse)Upset画图 movies <- read.csv(system.file("extdata", "movies.csv", package "UpSetR"), header T, s…

吴恩达2022机器学习专项课程(一) 6.2 逻辑回归第三周课后实验:Lab2逻辑回归

问题预览/关键词 如何创建逻辑回归算法&#xff1f;什么是Sigmoid函数&#xff1f;如何表示Sigmoid函数&#xff1f;Sigmoid函数的输出结果意味着什么&#xff1f;如何使用Numpy库计算指数&#xff1f; 笔记 1.创建逻辑回归算法 使用Sigmoid函数。 2.Sigmoid函数 也叫做逻…

代码随想录算法训练营DAY36|C++贪心算法Part.5|435.无重叠区间、763.划分字母区间、56. 合并区间

文章目录 435.无重叠区间按右边界排序CPP代码 按左边界排序如何判断相邻区间是否重叠如何判断一下一个区间与当前相邻区间是否重叠总结CPP代码 763.划分字母区间思路伪代码实现CPP代码 56. 合并区间思路CPP代码 435.无重叠区间 力扣题目链接 文章链接&#xff1a;435.无重叠区间…

2024 年 Rust 开发者路线图

Rust 近年来因其对性能、安全性和并发性的关注而广受欢迎。作为一名开发人员&#xff0c;掌握 Rust 可以为各种机会打开大门&#xff0c;包括 Web 开发。 在 github 上发现了这个优秀的路线图&#xff0c;由 Anshul Goyal 创建&#xff0c;它提供了一条全面的路径&#xff0c;概…

arm64-v8a和armeabi-v7a分别是什么?它们之间有什么区别

2024年4月22日&#xff0c;周一上午 arm64-v8a 和 armeabi-v7a 都是针对不同的 ARM 处理器架构的编译版本&#xff0c;它们之间的主要区别在于处理器架构和指令集。 arm64-v8a&#xff1a; arm64-v8a 是针对 ARMv8 架构的 64 位处理器的编译版本。ARMv8 架构引入了 64 位指令集…

C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小

本篇博客介绍C Qt QMainWindow实现无边框窗口&#xff0c;适用于win10/win11系统。 QMainWindow相对于QWidget多了dockedwidget功能&#xff0c;跟多人可能更喜欢用QMainWindow做主窗口&#xff0c;如果不需要dockedwidget功能&#xff0c;QMainWindow与QWidget做主窗口基本无…