【JavaEE Spring】SpringBoot 配置文件

news2024/11/18 10:48:15

SpringBoot 配置文件

  • 1. 配置文件的作用
    • 1.1 配置文件的说明
    • 1.2 SpringBoot 配置文件
  • 2. 配置文件的格式
    • 特殊说明
  • 3. properties 配置文件说明
    • 3.1 properties 基本语法
    • 3.2 读取配置文件
    • 3.3 properties 缺点分析
  • 4. yml 配置文件说明
    • 4.1 yml 的基本语法
    • 4.2 yml 使⽤进阶
      • 4.2.1 yml 配置不同数据类型及 null
        • 4.2.1.1 yml 配置读取
        • 4.2.1.2 注意事项:value 值加单双引号
      • 4.2.2 配置对象
      • 4.2.3 配置集合
      • 4.2.4 配置Map
    • 4.3 yml优缺点
  • 5. 综合训练 -- 验证码练习
  • 6. 总结

1. 配置文件的作用

1.1 配置文件的说明

  • 计算机上有数以千计的配置文件, 使用软件和硬件等都需要有配置文件,在C盘中存在;
  • 配置文件主要是为了解决硬编码带来的问题,把可能发生改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。

1.2 SpringBoot 配置文件

SpringBoot 支持并定义了配置文件的格式,也在另一个层面达到了规范其他框架集成到SpringBoot的目的。

很多项目或者框架的配置信息也放在配置文件中,比如:

  • 项目的启动端口
  • 数据库的连接信息(包含用户名和密码的设置)

2. 配置文件的格式

SpringBoot 配置文件有以下三种格式:

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

当应⽤程序启动时, Spring Boot会⾃动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml ⽂件.
在这里插入图片描述

特殊说明

  1. 理论上讲,.properties 和 .yml 可以并存在于一个项目中, 当 .properties 和 .yml 并存时, 两个配置都会加载。如果配置文件内容有冲突,则以 .properties 为主,也就是 properties 优先级高;
  2. 虽然理论上来讲, .properties 可以 和 .yml 共存, 但实际的业务当中, 我们通常会采取一种同一个配置文件格式, 这样可以更好的维护;

3. properties 配置文件说明

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

3.1 properties 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:
在这里插入图片描述
SpringBoot配置文件官网

3.2 读取配置文件

  • 如果在项目中想要主动读取配置文件的内容, 可以使用 @Value 注解使用 "${}"的格式来读取,例如:
    在这里插入图片描述
    【运行结果如下】
    在这里插入图片描述

3.3 properties 缺点分析

properties 配置是以 key-value 的形式配置的,如下图所⽰:
在这里插入图片描述
从上述配置key看出,properties 配置⽂件中会有很多的冗余的信息,⽐如这些:在这里插入图片描述
想要解决这个问题,就可以使⽤ yml 配置⽂件的格式化了.

4. yml 配置文件说明

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔

4.1 yml 的基本语法

yml 是树形结构的配置⽂件,它的基础语法是"key: value".
key 和 value 之间使⽤英⽂冒号加空格的⽅式组成空格不可省略
基础语法如下:
在这里插入图片描述

第⼀项的配置为正确的,key 也是⾼亮显⽰的. 第⼆项没有空格是错误的使⽤⽅式,第⼆项的 key 也没有⾼亮显⽰

使⽤ yml 连接数据库
在这里插入图片描述
yml 和 properties 连接数据库的配置对⽐
在这里插入图片描述

4.2 yml 使⽤进阶

4.2.1 yml 配置不同数据类型及 null

在这里插入图片描述

4.2.1.1 yml 配置读取

yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可,实现代码如下:
在这里插入图片描述
在这里插入图片描述

4.2.1.2 注意事项:value 值加单双引号

字符串默认不⽤加上单引号或者双引号,如果加英⽂的单双引号可以表⽰特殊的含义。尝试在 application.yml 中配置如下信息:
在这里插入图片描述
在这里插入图片描述
以上程序的执⾏结果如下图所⽰:
在这里插入图片描述
从上述结果可以看出:

  • 字符串默认不用加上单引号或者双引号。
  • 单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串
  • 双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义

4.2.2 配置对象

我们还可以在 yml 中配置对象,如下配置:
在这里插入图片描述
这个时候就不能⽤ @Value 来读取配置中的对象了,此时要使⽤另⼀个注解
@ConfigurationProperties 来读取,具体实现如下:
在这里插入图片描述
【方法调用类】
在这里插入图片描述
在这里插入图片描述

4.2.3 配置集合

配置⽂件也可以配置 list 集合,如下所⽰:
在这里插入图片描述
在这里插入图片描述
【调用类】
在这里插入图片描述
在这里插入图片描述

4.2.4 配置Map

配置⽂件也可以配置 map,如下所⽰:
在这里插入图片描述
在这里插入图片描述
【调用类】
在这里插入图片描述
在这里插入图片描述

4.3 yml优缺点

  • 优点

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

    1. 不适合写复杂的配置⽂件
      在这里插入图片描述
    2. 对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)

5. 综合训练 – 验证码练习

代码仓库

6. 总结

  1. properties 是以 key = value 的形式配置的键值类型的配置文件, yml 使用的是树形配置方式.
  2. 读取配置文件内容, 使用 @value 注解, 注解内使用 “${}” 的格式读取.
  3. yml 层级之间使用换行缩进的方式配置, key 和 value 之间使用 “:”(英文冒号) 加空格的方式设置, 并且空格不可省略.
  4. properties 为早期并且默认的配置文件格式, 其配置存在一定的冗余数据, 使用 yml 可以很好的解决冗余的问题, 但不适合复杂配置.
  5. yml 可以和 properties 共存, 但一个项目中建议使用一种配置类型文件.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1399133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础 - 07 Set之Set,AbstractSet

上边几篇,我们对java的List集合进行相关介绍,了解了关于List集合下的相关实现类的方法或者接口。 自本篇开始,将围绕java的Set进行介绍,也是对我java知识的巩固吧,处理业务越多,发现自己对基础知识的薄弱&…

数据结构小项目----通讯录的实现(这里用链表实现) 超详细~~~~૮(˶ᵔ ᵕ ᵔ˶)ა

目录 Contact.h说明: 结构体与头文件的包含: ​编辑 函数在头文件的声明与定义: Contact.c中各个函数的实现: 1.检查链表中的数据是否满了,满了就扩容 2.链表的尾插 3.链表的删除 4.查找名字是否匹配 5.初始化通讯…

Vagrant安装Oracle Data Guard环境示例

在Windows 11下,通过Vagrant安装标准的Data Guard环境(默认为non-CDB模式),耗时约26分钟,共生成2台虚机。以下为安装日志: ...host2: Welcome to DGMGRL, type "help" for information.host2: C…

b+树的理解

二叉树: 每个节点支持两个分支的树结构,相比于单向链表,多了一个分支。 二叉查找树: 在二叉树的基础上增加了一个规则,左子树的所有节点都小于它的根节点,右子树的所有节点都大于他的根节点。 二叉查找树…

Beego之Beego快速入门

1、beego快速入门 1.1 新建项目 新建一个项目: [rootzsx src]# bee new quickstart 2023/02/19 15:55:50.370 [D] init global config instance failed. If you do not use this, just ignore it. open conf/app.conf: no such file or directory 2023/02/19 1…

易优demo网站测试结果

易优demo网站测试结果-06 1、信息收集 网站账号:admin 密码:Aa123456 2、存在的漏洞 2.1 后台弱口令漏洞 http://eyoucms-s347fqn.gxalabs.com/login.php?sAdmin/login网站账号:admin 密码:Aa123456 成功登陆 2.2 代码远程…

递归、搜索与回溯算法(专题二:深搜)

往期文章(希望小伙伴们在看这篇文章之前,看一下往期文章) (1)递归、搜索与回溯算法(专题零:解释回溯算法中涉及到的名词)【回溯算法入门必看】-CSDN博客 (2&#xff09…

linux基础学习(5):yum

yum是为了解决rpm包安装依赖性而产生的一种安装工具 1.yum源 1.1配置文件位置 yum源的配置文件在/etc/yum.repos.d/中 *Base源是网络yum源,也就是需要联网才能使用的yum源。默认情况下,系统会使用Base源 *Media源是光盘yum源,是本地yum源…

openjdk源码了解

openjdk给出debug配置选项,common/autoconf/jdk-options.m4 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL], [################################################################################# Set the debug level# release: no debug information, all opti…

Jenkins实现CICD(1)_Windows10 安装Jenkins

文章目录 一、打开Jenkins官网,下载安装包二、安装Jenkins三、JAVA环境_JDK17下载安装(Windows版)四、将jdk-17添加到系统环境变量五、jenkins关联jdk-17六、安装常用插件(例如:git、gitlab、钉钉) 一、打开Jenkins官网&#xff0…

PDshell16逆向PostgreSQL 工程显示字段comment备注

现状:当刚逆向成功的表结构是没有原来表结构中的,comment备注如下 然后pd逆向工程的sql已经返回了这个备注的含义 解决方案: 1、设置显示注释列 tools——Display Preferences…如下 勾选-按照下面得方式勾选这三个 复制这里的VBS脚本&a…

Python数据分析案例37——基于分位数神经网络(QRNN)的汇率预测

案例背景 我导师的研究方向是少有的做"分位数回归"方向,作为研究机器学习深度学习方向的我自然就继承了这个特色,改进出了很多特殊结合方法,我会结合各种机器学习方法和各种分位数回归的方法。 之前写过分位数随机森林&#xff0…

哈希表 -- 刷题(查找算法)

目录 💻哈希 -- 知识点 🐍刷题 🌼1,雪花 AC -- vector AC -- 链式前向星 🌼2,公式 💻哈希 -- 知识点 线性表 和 树表,通过比较关键字进行查找 而 散列表,基于…

【MATLAB源码-第119期】基于matlab的GMSK系统1bit差分解调误码率曲线仿真,输出各个节点的波形以及功率谱。

操作环境: MATLAB 2022a 1、算法描述 GMSK(高斯最小频移键控)是一种数字调制技术,广泛应用于移动通信,例如GSM网络。它是一种连续相位调频制式,通过改变载波的相位来传输数据。GMSK的关键特点是其频谱的…

【接上篇】二、Flask学习之CSS(下篇)

上篇&#xff1a;二、Flask学习之CSS 3.8hover hover是用来美化鼠标悬停的效果的&#xff0c;当鼠标停放在某个区域&#xff0c;就会执行对应的hover操作。可以操作本标签的内容&#xff0c;也可以操作本标签下某一个标签的内容 3.9after <!DOCTYPE html> <html l…

Navicat平替工具,一款免费开源的通用数据库工具

前言 前段时间有小伙伴在群里提问说&#xff1a;因为公司不允许使用破解版的Navicat&#xff0c;有好用的Navicat平替工具推荐吗&#xff1f;今天分享一款免费开源的通用数据库工具&#xff1a;DBeaver。 DBeaver工具介绍 DBeaver是一款免费的跨平台数据库工具&#xff0c;适…

灵活扩展:深入理解MyBatis插件机制

第1章&#xff1a;MyBatis插件的重要性 大家好&#xff0c;我是小黑&#xff0c;咱们今天要聊的是MyBatis插件&#xff0c;MyBatis&#xff0c;大家都不陌生&#xff0c;它是一个ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;让咱们在操作数据库时能更加优雅。但今…

“深入理解 Docker 和 Nacos 的单个部署与集成部署“

目录 引言&#xff1a;Docker Nacos 单个部署1.1 什么是 Docker&#xff1f;Docker 的概念和工作原理Docker 为什么受到广泛应用和认可 1.2 什么是 Nacos&#xff1f;Nacos 的核心功能和特点Nacos 在微服务架构中的作用 1.3 Docker 单个部署 Nacos Docker Nacos 集成部署总结&a…

sfml使用opengl着色器实现2d水面波浪

SFML中使用GLSL着色器来绘制水波。 效果 代码 #include <SFML/Graphics.hpp> #include <iostream>int main() {const int WIDTH = 800;

用C语言实现简单的三子棋游戏

目录 1 -> 模块简介 2 -> test.c 3 -> game.c 4 -> game.h 1 -> 模块简介 test.c:测试游戏逻辑 game.c: 函数的实现 game.h:函数的声明 2 -> test.c #define _CRT_SECURE_NO_WARNINGS 1#include "game.h";void menu() {printf("****…