【JavaEE Spring】SpringBoot 配置文件

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 共存, 但一个项目中建议使用一种配置类型文件.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型无代码构建知识图谱概述

2023年3月15日,ChatGPT4.0的横空出世,将人们对大语言模型的关注推到了风口浪尖。由于其在智能问答、翻译以及文本生成等工作任务上的卓越表现,业界一度出现了不再需要发展知识图谱相关技术的观点,知识图谱相关概念严重受挫。无可置…

【设计模式】文件目录管理是组合模式吗?

组合模式是什么? 组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用? 当你发现你需要在代码中实现树形数据结构,让整体-部…

无人机航迹规划(一)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Flutter 与 Android原生 相互通信:BasicMessageChannel、MethodChannel、EventChannel

前言 本文主要讲解,使用不同的 Channel 让 Flutter 和 Android原生 进行通信,由于只是讲解两端通信,所以可视化效果不好; 不过我写了一篇专门讲解 Flutter 嵌入 Android原生View的文章 Flutter 页面嵌入 Android原生 View-CSDN…

【富文本编辑器实战】02 编写编辑器配置文件

编写编辑器配置文件 目录 编写编辑器配置文件前言项目结构分析项目配置菜单项配置语言配置总体配置 总结 前言 本篇文章主要内容是项目的配置文件的编写与讲解,包括菜单项配置、语言配置、总体配置。 项目结构分析 下图是编辑器的总体结构: 编辑器大致…

蓝桥杯真题(Python)每日练Day2

题目 题目分析 对于本题首先确定其数据结构为优先队列,即邮费最小的衣服优先寄,算法符合贪心算法。可以直接使用queue库的PriorityQueue方法实现优先队列。关于PriorityQueue的使用方法主要有: import queue q queue.Queue()# 队列 pq qu…

Django随笔

关于Django的admin 1. 在url中把 from django.contrib import admin 重新解开 把path(admin/,admin.site.urls), 解开 2. 注册app,在配置文件中写 django.contrib.admin, 3.输入命令进行数据库迁移 Django国际化 配置文件中(改成中文) LA…

云轴科技ZStack位列IDC云系统软件市场教育行业TOP2

近日,全球IT市场研究和咨询公司IDC发布 《中国云系统软件市场跟踪报告2023H1》 ZStack作为产品化的云基础软件提供商 位居云系统软件市场第一梯队 市场份额位列独立云厂商*第一 增速最快 教育行业TOP2 在教育行业,云计算已成为教育行业信息化的重要基础…

十一、常用API——爬虫

目录 爬虫本地爬虫和网络爬虫贪婪爬取和非贪婪爬取正则表达式在字符串方法中的使用捕获分组和非捕获分组分组捕获分组非捕获分组 爬虫 本地爬虫和网络爬虫 有如下文本,请按照要求爬取数据。(本地爬虫) Java自从95年问世以来,经历…

红队渗透靶机:TOPPO: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 5、dirsearch WEB tips1 tips2 SSH登录 提权 系统信息收集 本地 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110…

重构改善既有代码的设计-学习(一):封装

1、封装记录(Encapsulate Record) 一些记录性结构(例如hash、map、hashmap、dictionary等),一条记录上持有什么字段往往不够直观。如果其使用范围比较宽,这个问题往往会造成许多困扰。所以,记录…

【LeetCode每日一题】2809. 使数组和小于等于 x 的最少时间

2024-1-19 文章目录 [2809. 使数组和小于等于 x 的最少时间](https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/)思路: 2809. 使数组和小于等于 x 的最少时间 思路: 获取两个列表的长度n,并初始化一个二维数组f&…

深耕文档型数据库12载,SequoiaDB再开源

1月15日,巨杉数据库举行SequoiaDB新特性及开源项目发布活动。本次活动回顾了巨杉数据库深耕JSON文档型数据库12年的发展历程与技术演进,全面解读了SequoiaDB包括在高可用、安全、实时、易用性四个方向的技术特性,宣布了2024年面向技术社区的开…

Next-GPT: Any-to-Any Multimodal LLM

Next-GPT: Any-to-Any Multimodal LLM 最近在调研一些多模态大模型相关的论文,发现Arxiv上出的论文根本看不过来,遂决定开辟一个新坑《一页PPT说清一篇论文》。自己在读论文的过程中会用一页PPT梳理其脉络和重点信息,旨在帮助自己和读者快速了…

基于SpringBoot Vue养老院管理

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

使用JFLASH实现文件程序自动化合并及下载功能

主要总结下使用 SEGGER 工具集的 JFLASH 软件实现hex/bin文件合并以及程序的自动下载使用方法。 起因是最近使用到LVGL字库文件的制作,每次都要将分散的bin文件按既定分配的偏移作合并处理,刚开始使用的是二进制文件合并工具,文件少的时候还行&#xff…

【网站项目】基于jsp的199旅游景点管理系统

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

10分钟完成权限系统全流程开发

背景 首先问下chatgpt,权限系统的模型有哪些? 基于上述的结论,我们选择基于角色的访问控制(RBAC),请从数据库设计、接口文档、代码实现、单元测试四个方面分别详细描述每个部份需要实现的内容。 数据库实现 针对上述的数据库设计部份&#…

【前端】WebSocket接收二进制数据转JSON并解决中文乱码问题(ArrayBuffer转json)

场景: WebSocket与mqtt服务器通信,接收二进制数据并将其转为Json使用。一般方式都会出现中文乱码问题。 解决方法: handleBinaryToJson(e) {let enc new TextDecoder("utf-8");let uint8_msg new Uint8Array(e);let temp en…

Python自动化实战之接口请求的实现

在前文说过,如果想要更好的做接口测试,我们要利用自己的代码基础与代码优势,所以该章节不会再介绍商业化的、通用的接口测试工具,重点介绍如何通过 python 编码来实现我们的接口测试以及通过 Pycharm 的实际应用编写一个简单接口测…