【Spring】SpringBoot配置文件
SpringBoot配置文件
- 配置文件作用
- SpringBoot配置文件
- 配置文件快速入手
- 配置文件的格式
- properties配置文件说明
- 基本语法
- 读取配置文件
- properties缺点分析
- yml配置文件说明
- yml基本语法
- yml使用进阶
- yml配置读取
- 配置对象
- 配置集合
- 配置Map
- yml优缺点
配置文件作用
计算机上有数以千计的配置⽂件, 我们使⽤的绝⼤多数软件, ⽐如浏览器, 微信, Idea, 甚⾄电脑, ⼿机, 都离不开配置⽂件. 我们可能永远不会直接与其中的⼤部分⽂件打交道,但它们确实以不同的形式散落在我们的计算机上, ⽐如C:\Users, C:\Windows⽂件夹, 以及各种 *.config, *.xml ⽂件
配置⽂件主要是为了解决硬编码带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当我们启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏
硬编码是将数据直接嵌⼊到程序或其他可执⾏对象的源代码中, 也就是我们常说的"代码写死".
⽐如⼿机字体⼤⼩
如果采⽤硬编码的⽅式, 就直接在程序中指定字体⼤⼩, 所有的⽤⼾使⽤的都是同⼀个字体⼤⼩但是不同的⽤⼾有不同的偏好, 我们可以把⼿机字体的⼤⼩放在配置⽂件中, 当程序启动时, 读取配置, 以⽤⼾设置的字体⼤⼩来显⽰
SpringBoot配置文件
SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.
很多项⽬或者框架的配置信息也放在配置⽂件中, ⽐如:
• 项⽬的启动端⼝
• 数据库的连接信息(包含⽤⼾名和密码的设置)
• 第三⽅系统的调⽤密钥等信息
• ⽤于发现和定位问题的普通⽇志和异常⽇志等.
配置文件快速入手
我们在前⾯讲了Tocmat 默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080
但是如果8080端⼝号已经被其他进程使⽤了呢? 我们可以通过配置⽂件来修改服务的端⼝号
SpringBoot 在创建项⽬时, 就已经帮我们创建了配置⽂件

修改application.properties文件


重新启动服务 显示Tomcat启动端口号为9090
配置文件的格式
SpringBoot配置文件有以下三种
- application.properties
- application.yml
- application.yaml
yml为yaml的简写 实际开发中出现的频率最高
特殊说明
- 理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中,当 .properties 和 .yml并存时,两个配置都会加载. 如果配置⽂件内容有冲突, 则以 .properties 为主, 也就是.properties 优先级更⾼.
- 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置⽂件格式,这样可以更好的维护(降低故障率)
properties配置文件说明
properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件
基本语法
properties 是以键值的形式配置的,key 和 value 之间是以"="连接的,如

读取配置文件
如果在项目中,想要主动的读取配置文件中的内容,可以使用@Value注解来实现
@Value注解使用${}的格式读取
@RestController
public class PropertiesController {@Value("${mykey.key1}")private String key1;@RequestMapping("/key")public String key(){return "接收到key" + key1;}
}

properties缺点分析
properties 配置是以 key-value 的形式配置的

从上述配置key看出,properties配置文件中会有很多的冗余的信息
要想解决这个问题,就可以使用yml配置文件的格式化了
yml配置文件说明
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔.我们先来学习yml的语法
yml基本语法
yml 是树形结构的配置⽂件,它的基础语法是"key: value".
key 和 value 之间使⽤英⽂冒号加空格的⽅式组成,空格不可省略
基础语法如下:

yml使用进阶
#字符串
string.value: hello#布尔值
boolean.value: true#整数
int.value: 10#浮点数
float.value: 3.1415926#null ~表示null
null.value: ~# ""空字符串 直接后面什么都不加就可以了,但是这种方式不直观,更多的表示使用引号括起来
empty.value: ""
yml配置读取
yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可
注意事项
value值加单双引号
字符串默认不⽤加上单引号或者双引号,如果加英⽂的单双引号可以表⽰特殊的含义。尝试在 application.yml 中配置如下信息

运行结果

从上述结果可以看出
- 字符串默认不需要加上单引号或者双引号
- 单引号会转义特殊字符.使其失去特殊功能,始终是一个普通字符
- 双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义
配置对象
我们还可以在yml中配置对象
student:id: 1name: zhangsanage: 10#或者使用行内写法
student: {id: 2, name: lisi, age: 20}
此时就不能用@Value 来读取配置中的对象了, 此时要使用另一个注解@ConfigurationProperties 来读取
具体实现
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {private int id;private String name;private int age;
}


配置集合
配置⽂件也可以配置 list 集合,如下所⽰:
dbtypes:name:- mysql- sqlserver- db2
集合的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,具体实现如下:
@Data
@ConfigurationProperties(prefix = "dbtypes")
@Component
public class ListConfig {private List<String> name;
}


配置Map
配置⽂件也可以配置 map,如下所⽰:
maptypes:map:k1: v1k2: v2k3: v3
Map的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,具体实现如下
@Data
@Component
@ConfigurationProperties(prefix = "maptypes")
public class MapConfig {private HashMap<String,String> map ;
}


yml优缺点
优点
-
可读性⾼,写法简单, 易于理解
-
⽀持更多的数据类型, 可以简单表达对象, 数组, List,Map等数据形态
-
⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤
缺点 -
不适合写复杂的配置⽂件
-
对格式有较强的要求
相关文章:
【Spring】SpringBoot配置文件
SpringBoot配置文件 配置文件作用SpringBoot配置文件配置文件快速入手配置文件的格式properties配置文件说明基本语法读取配置文件properties缺点分析 yml配置文件说明yml基本语法yml使用进阶yml配置读取配置对象配置集合配置Mapyml优缺点 配置文件作用 计算机上有数以千计的配…...
python批量下载txt文件中链接的数据
python下载txt文件中链接的数据,以gimms ndvi3g下载为例 官方下载网址:https://www.ncei.noaa.gov/data/land-normalized-difference-vegetation-index/access/ 选择下载2020年数据为例: 网址:Index of /data/land-normalized-difference-vegetation-index/access/2020…...
stm32 Bootloader设计(YModem协议)
stm32 Bootloader设计(YModem协议) Chapter1 stm32 Bootloader设计(YModem协议)YModem协议:STM32 Bootloader软件设计STM32 Bootloader使用方法准备工作stm32 Bootloader修改:stm32目标板程序.bin偏移地址修改: Chapt…...
竞赛 题目: 基于深度学习的疲劳驾驶检测 深度学习
文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…...
ubuntu 16.04.5 安装 vivado 2019.1 完整编译AD9361的环境
一、前期安装 1、安装ncurses库(已经包含了,其他的os需要安装) sudo apt install libncurses5二、安装 sudo ./xsetup使用lic进行激活。 三、安装后 输入指令 sudo gedit ~/.bashrc 末尾添加 source /opt/Xilinx/Vivado/2019.1/setti…...
Zotero详细功能补充!熟练使用!【进阶版,持续更新】
Zotero安装请参见文章Zotero安装 1.改变条目文件夹 如果直接选择条目直接进行移动,能移动成功,但是原来文件夹和目标文件夹都会存在,实际是复制! 如果只想保留在一个文件夹里面,可以选中条目,右击-从分…...
【Windows】Windows系统常用命令大全
现实生活中,对电脑越熟悉懂得的快捷命令就越多。例如我们日常遇到的比较方便办公技巧,用快捷命令调用工具:调用计算器,Win键R,输入calc,回车,计算器界面弹出来; 调用记事本ÿ…...
大语言模型研究进展综述
1、历史 自20世纪50年代图灵测试被提出以来,研究人员一直在探索和开发能够理解并掌握语言的人工智能技术。 作为重要的研究方向之一,语言模型得到了学术界的广泛研究,从早期的统计语言模型和神经语言模型开始,发展到基于Transform…...
linux gdb 调试 常见调试命令介绍+总结
1.调试前准备 -g gcc arcg.c -g -oO -o app //必须添加-g 2.调试 gdb gdb app 3.常见调试命令 set args 1 2 3 4 5 6 //设置参数 show args //查看参数 3.1执行程序 1.start2. run gdb app set args 1 2 3 4 5 start //执行一行 c //继续执行 q…...
基于JavaWeb+SSM+Vue微信小程序校园兼职任务平台系统的设计和实现
基于JavaWebSSMVue微信小程序校园兼职任务平台系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 随着社会的发展和全球疫情的冲击,大学生的就业形势越来越严峻。越…...
我的MQTT操作类(M2Mqtt.Net)
类本体 4.3.0 public class MQTTMain{public MqttClient mqttClient null ; public bool MQTTMainConnect(string MenZuNo, string ServerIP, int ServerPort, string UserName, string Pwd){try{string EMQX_CLIENT_ID $"称重端-{MenZuNo}-{OPCommon.PCControl.G…...
node插件MongoDB(四)—— 库mongoose 的个性话读取(字段筛选、数据排序、数据截取)(四)
文章目录 一、字段筛选二、数据排序三、数据截取1. skip 跳过2. limit 限定 一、字段筛选 字段筛选:只读取指定的数据,比如集合(表)中有…...
AI:73-结合语法知识的神经机器翻译研究
🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...
[LeetCode]-225. 用队列实现栈
目录 225. 用队列实现栈 题目 思路 代码 225. 用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode)https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目 请你仅使用两个队列实现一个后入先出(LIFO࿰…...
Kafka Rebanlace次数过高问题
Kafka Rebanlace次数过高问题 环境: Kafka Server 2.6.x Kafka Client Java 2.8.2 缘起: 最近发现Kafka Rebalance次数着实有点多,一天达到了六十多次,感觉不太正常,于是查了下日志发现: Offset commit c…...
计算机是如何进行工作的+进程和线程
一)计算机是如何工作的? 指令是如何执行的?CPU基本工作过程? 假设上面有一些指令表,假设CPU上面有两个寄存器A的编号是00,B的编号是01 1)第一个指令0010 1010,这个指令的意思就是说把1010地址上面的数据给他读取到A寄存器里面 2…...
MySQL(11):数据处理之增删改
插入数据 方式1: 一条一条的添加数据 为表的所有字段按默认顺序插入数据 INSERT INTO 表名 VALUES (value1,value2,....);# 没有指明添加的字段 INSERT INTO emp1 VALUES (1,TOM,2023-11-06,3400);没有指明添加的字段,要按照声明顺序,进行…...
QT QDockWidget
QDockWidget是Qt中的一个容器类,用于在主窗口上创建可停靠的子窗口。 设置停靠窗口的一般流程如下: (1)创建一个QDockWidget 对象的停靠窗体。 (2)设置此停靠窗体的属性,通常调用setFeatures()及setAllowedAreas()两种方法。 (3)新建一个要插入停靠窗…...
Android 12.0 开启蓝牙状态栏即显示蓝牙图标
Android 12.0 开启蓝牙状态栏即显示蓝牙图标 最近收到客户反馈想要在开启蓝牙时状态栏就能显示出蓝牙图标,我们系统默认是蓝牙连接上设备后状态栏才显示出蓝牙图标,具体修改参照如下: /vendor/mediatek/proprietary/packages/apps/SystemUI…...
skynet学习笔记02— skynet介绍、skynet基础API与环境变量
01、Skynet与Actor模型 在系统Skynet之前,先了解一下Skynet与Actor模型,下列是风云大佬的介绍以及一个大佬的博客 https://github.com/cloudwu/skynet/wiki/GettingStartedhttps://blog.csdn.net/qq769651718/article/details/79432793 02、Skynet基础…...
ZTools(效率工具)
链接:https://pan.quark.cn/s/add40d5ba361ZTools 是一款高性能、可扩展的跨平台应用启动器和插件平台,是知名效率工具 uTools 的开源实现版本。它采用现代化的技术栈构建,旨在为用户提供极速的桌面应用启动体验和强大的插件扩展能力。快速启…...
别再手抄谱了!用Sibelius把MIDI文件一键转成五线谱(附Cubase协作流程)
别再手抄谱了!用Sibelius把MIDI文件一键转成五线谱(附Cubase协作流程) 每次在DAW里完成编曲后,最头疼的就是把那些灵光一现的旋律变成规整的五线谱。传统的手动记谱不仅耗时费力,还容易出错。作为从业十年的游戏音效师…...
基于YOLOv26深度学习算法的社区流浪动物检测系统研究与实现
文章目录 基于YOLOv26深度学习算法的社区流浪动物检测系统研究与实现 一、研究背景和意义 二、相关技术介绍 2.1 流浪动物管理现状 2.2 YOLOv26目标检测算法 2.3 动物跟踪技术 三、基于YOLOv26的社区流浪动物检测算法研究实现方法 3.1 系统架构设计 3.2 数据集构建 3.3 动物检测…...
别再只盯着CMMI认证了!聊聊CMMI-DEV、SVC、ACQ三个模型到底该怎么选?
CMMI三大模型深度解析:如何为你的企业精准匹配最佳实践框架? 当企业决策者面对CMMI认证时,往往陷入一个典型误区——将CMMI-DEV视为唯一选择。事实上,CMMI研究院早在2010年就针对不同业务场景推出了三大专业模型:面向软…...
从车窗升降到自动驾驶:聊聊LIN总线和CAN总线在实车里的那些事儿
从车窗升降到自动驾驶:LIN与CAN总线的汽车神经脉络解密 清晨七点十五分,当你坐进驾驶座按下车窗按钮时,可能不会想到这个简单的动作正触发着一场精密的电子交响乐。而在三公里外的高速公路上,前方车辆突然刹车时,你的爱…...
告别Office依赖!用Qt和QXlsx 1.4.3独立读写Excel的保姆级教程
告别Office依赖!用Qt和QXlsx 1.4.3独立读写Excel的保姆级教程 在跨平台应用开发中,处理Excel文件一直是个令人头疼的问题。传统方案依赖Office或WPS组件,不仅增加部署复杂度,在Linux服务器、嵌入式设备等环境中更是难以实现。本文…...
终极指南:3种方法激活Beyond Compare 5专业版
终极指南:3种方法激活Beyond Compare 5专业版 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare密钥生成器是一个基于Python开发的专业工具,专门用于生成Bey…...
Legacy iOS Kit终极指南:解锁旧iPhone/iPad的完整降级与越狱方案
Legacy iOS Kit终极指南:解锁旧iPhone/iPad的完整降级与越狱方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS…...
第一个shell脚本
Bash脚本: 能够监控指定名称的进程sshd 如果进程存在,则输出其PID和状态信息 如果进程不存在,则自动尝试重启该进程(可假设进程启动命令已知),并记录日志(包含时间戳)shell脚本 #!/bin/bash #要监控的进程名 namessh #日志路径 lo…...
HDMI矩阵主要解决什么问题
随着VGA/DVI接口的矩阵慢慢退出市场,现在信号源和显示设备慢慢都统一到HDMI接口了。HDMI矩阵从早期的监控室用于切换硬盘录像机的信号到会议室用来切换会议摄像机,它的核心作用就是解决多路 HDMI 信号的输入、然后切换或分配到多路HDMI输出的问题&#x…...
