SpringBoot的配置文件

news2025/1/10 1:59:51

SpringBoot的配置文件

  • 🔎配置文件的作用
  • 🔎配置文件的格式
  • 🔎properties配置文件
    • properties的基本语法
    • 读取配置文件
  • 🔎yml配置文件
    • yml的基本语法
    • 读取配置文件
    • Tips
      • 关于 \n🍭
      • 配置对象🍭
      • 配置集合🍭
  • 🔎对比properties与yml
    • 配置文件中包含中文
    • 链接数据库
    • 总结
  • 🔎不同环境下的配置文件
  • 🔎结尾

🔎配置文件的作用


在项目中所有重要的数据都是在配置文件中进行相关的配置

例如

  • 数据库的连接信息(包含用户名和密码的设置)
  • 项目启动的端口号
  • 第三方系统的调用密钥等信息
  • 用于发现和定位问题的普通日志和异常日志

针对上述内容, 可以将 Spring Boot 配置文件划分为 2 类

  1. 系统配置文件
  2. 用户自定义配置文件

举个栗子🌰

打包后的代码由 .java → .class
(不允许被修改)

在这里插入图片描述

此时如果想要进行修改端口号等操作, 就不能通过修改代码的方式进行

可以通过配置文件进行相应的修改

找到对应的 Jar 包

在这里插入图片描述

利用压缩文件打开 Jar 包

在这里插入图片描述

修改对应的配置文件即可

在这里插入图片描述

🔎配置文件的格式


  • .properties
  • .yml

.properties的出现时间早于.yml, 其功能都是类似的
但优先执行.properties(出现较早)

例如@PostConstructinit-method都属于初始化方法

区别在于
@PostConstruct使用注解进行初始化(出现较晚)
init-method使用xml进行初始化(出现较早)
优先执行@PostConstruct(出现较晚)

利用application.properties设置端口号

在这里插入图片描述

利用application.yml设置端口号

在这里插入图片描述

利用 application.properties + application.yml 设置端口号

优先执行application.properties设置的端口号

在这里插入图片描述

注意🍭

虽然.properties.yml可同时存在, 但通常会选择其中一种格式进行使用(劲酒虽好可不要贪杯呦~~)

🔎properties配置文件


properties → 属性

properties的基本语法


properties 是以键值对的形式配置的

properties 的语法为 Key=Value

  • Key, 键
  • Value, 值
  • =, 分割键值对

properties 的注释为 #

在这里插入图片描述

读取配置文件


利用注解@Value("${所需读取的对象}")读取配置文件

在这里插入图片描述

在这里插入图片描述

🔎yml配置文件


yml → YAML(Yet Another Markup Language)的缩写 → 另一种标记语言

  • yml 支持更多的数据类型, 可以简单表达数组, 散列表, 标量等数据形态
  • yml 支持更多的编程语言, 例如 Java, Golang, PHP, Python, JavaScript…

yml的基本语法


yml 是树形结构的配置文件

yml 的语法为 Key: Value

  • Key, 键
  • Value, 值
  • : , 分割键值对

(注意冒号后面的空格)

yml 的注释为 #

在这里插入图片描述

读取配置文件


利用注解@Value("${所需读取的对象}")读取配置文件

在这里插入图片描述

在这里插入图片描述

Tips


关于 \n🍭


在 yml 中输入 str(字符串)有 3 种格式

  • str(直接输入)
  • 'str'(利用单引号将字符串括起来)
  • "str"(利用双引号将字符串括起来)

输入字符串(未添加 \n)

在这里插入图片描述

运行结果

在这里插入图片描述

输入字符串(添加 \n)

在这里插入图片描述

运行结果

在这里插入图片描述

结果分析🍂

str直接输入字符串 → 所见即所得

'str'利用单引号将字符串括起来再添加\n → 所见即所得

"str"利用双引号将字符串括起来再添加\n\n后面的内容换行

配置对象🍭


在 yml 中配置对象有 2 种方式

方式1🍂

cat:
  type: 大橘
  price: 996
  age: 1

在这里插入图片描述

方式2🍂

cat: {type: 1, price: 007, age: 1}

在这里插入图片描述

读取对象

定义一个Cat

  • @Component, 存储 Bean
  • @ConfigurationProperties(), 读取配置文件(.yml)中的对象
  • @Data, Lombok 插件提供的注解, 包含一系列方法(setter, getter, toString…)

注意🍂

  1. 实体类中的属性名要和配置文件中的 Key 一致

  2. 实体类需要包含 setter
    (setter → 为实体类中的属性设置对应的值, 依据读取到的对象的值)

实体类中的属性名要和配置文件中的 Key 一致

在这里插入图片描述

在这里插入图片描述

将读取到的对象的信息输出在控制台

在这里插入图片描述

配置集合🍭


在 yml 中配置集合有 2 种方式

方式1🍂

cats:
  types:
    - 大橘
    - 布偶
    - 蓝猫

在这里插入图片描述

方式2🍂

cats: {types: [大橘, 布偶, 蓝猫]}

在这里插入图片描述

读取集合

定义一个Cats

  • @Component, 存储 Bean
  • @ConfigurationProperties(), 读取配置文件(.yml)中的对象
  • @Data, Lombok 插件提供的注解, 包含一系列方法(setter, getter, toString…)

注意🍂

  1. 实体类中的集合名要和配置文件中的集合一致

  2. 实体类需要包含 setter
    (setter → 为实体类中的集合设置对应的值, 依据读取到的集合的值)

实体类中的集合名要和配置文件中的集合一致

在这里插入图片描述
在这里插入图片描述

将读取到的对象的信息输出在控制台

在这里插入图片描述

🔎对比properties与yml


配置文件中包含中文


当配置文件中包含中文, 使用 properties 读取需要修改 2 处配置

  • 配置文件的编码格式
  • 读取配置文件时的编码格式

当配置文件中包含中文, 使用 yml 无需修改配置

使用 properties 读取🍭

配置文件的编码格式

在这里插入图片描述

读取配置文件时的编码格式

在这里插入图片描述

链接数据库


使用 properties 链接数据库

在这里插入图片描述

使用 yml 链接数据库

在这里插入图片描述

对比分析🍂

使用 properties 链接数据库时, 比较冗余
每个步骤都包含spring.datasource

使用 yml 链接数据库
yml 是树形结构的配置文件, 对比 properties 较为便捷

总结

在这里插入图片描述

🔎不同环境下的配置文件


根据业务的需求创建不同的配置文件

例如
开发环境下的配置文件, 生产环境下的配置文件…

注意🍭

命名规则为application-环境.对应的配置文件格式

例如application-dev.yml(开发环境下的配置文件)

在这里插入图片描述

调用开发环境下的配置文件

在这里插入图片描述

🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

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

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

相关文章

网络知识点之-DNS协议

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个…

4.13 ReentrantLock

相对于 synchronized 它具备如下特点 可中断可以设置超时时间可以设置为公平锁支持多个条件变量 与 synchronized 一样,都支持可重入 基本语法// 获取锁reentrantLock.lock();try{// 临界区} finally{// 释放锁reentrantLock.unlock();}1、可重入 可重入是指同一个…

小程序 抽象节点 selectable 与slot区别

比较 了解了微信小程序的抽象节点组件封装方式之后,觉得与vue的slot使用类似,但也有些区别 : 抽象节点 和 slot 有什么不同: slot只需要你传入一段代码抽象节点需要你传入一个自定义组件,,不是让你只传递…

Kubernetes集群本地连接调试工具KtConnect

一、简介 KtConnect(Kt为Kubernetes Toolkit集群工具包的简写)是一款基于Kubernetes环境用于提高本地测试联调效率的小工具 Connect:建立数据代理通道,实现本地服务直接访问Kubernetes集群内网(包括Pod IP和Service域…

Jetpack Compose教程-水位控制小部件

Jetpack Compose教程-水位控制小部件 Apple的应用程序和小部件一直是设计的典范,也给我们的"复制系列:活动应用"和"卡片应用"提供了灵感。当他们发布了新款苹果手表Ultra时,它里面深度测量小部件的设计引起了我们的兴趣&…

加快奔向“国际数字之都” CDEC2023中国数字智能生态大会走进上海

数智闪耀长三角,风云际会上海滩。 6月14日上午,以汇聚数字产业动能、打造区域合作为主旨的 CDEC2023中国数字智能生态大会上海站活动在浦东软件园创新体验中心举行。 大会以“共建AI智能生态”为主题,吸引致远互联、SAP、浪潮等龙头企业&…

2022年山东省职业院校技能大赛网络搭建与应用赛项网络搭建与安全部署服务器配置及应用

2022年山东省职业院校技能大赛 网络搭建与应用赛项 第二部分 网络搭建与安全部署&服务器配置及应用 竞赛说明: 一、竞赛内容分布 竞赛共分二个模块,其中: 第一模块:网络搭建及安全部署项目 第二模块:服务器…

C#里的var和dynamic区别到底是什么,你真的搞懂了嘛

前言 这个var和dynamic都是不确定的初始化类型,但是这两个本质上的不同。不同在哪儿呢?var编译阶段确定类型,dynamic运行时阶段确定类型。这种说法对不对呢?本篇看下,文章原文地址:在这里 概括 以下详细叙述下这两个(var,dynamic…

CVE-2023-33246命令执行复现分析

简介 RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。既可为分布式应用系统提供异步解耦和削峰填谷的能力&#xff0c;同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。 影响版本 <RocketMQ 5.1.0 <RocketMQ 4.9.5 环境搭建 docker…

Leetcode 剑指 Offer II 031. 最近最少使用缓存

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 运用所掌握的数据结构&#xff0c;设计和实现一个 LRU (Least Re…

Python 类型检测:isinstance() 与 type()

文章目录 参考描述面向对象编程概念类与实例继承super() 与代理对象方法的自动继承属性的继承 isinstance 与 type 内置函数isinstance()可迭代对象仅能为元组可能产生的 TypeError嵌套的元组 typeisinstance() 与 type() 的区别 参考 项目描述Python 官方文档https://docs.py…

【C语言初阶】分支语句If与switch的具体用法,有这篇博客就够了

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,这里是君兮_,今天又来给大家更新0基础学习C语言中的文章啦&#xff01; 今天带来的是对分支语句的详解&#xff0c;初学者建议先看看总集哦, 这里是链接: 【C语言初阶】万字解析,带你0基础快速入门C语言(上) 【C语…

图片转excel表格算法之霍夫变换法原理浅析

大家伙都知道&#xff0c;图片转excel表格是金鸣识别中一项非常重要的功能&#xff0c;金鸣识别的OCR在识别图片中的表格时&#xff0c;会用到一种叫霍夫变换法的算法&#xff0c;那这个算法到底是怎么回事&#xff1f;它的原理又是什么呢&#xff1f; 一、霍夫变换法的概念 …

深入了解模板知识(c++)

前言 在c中模板是很重的&#xff0c;泛型编程就是模板最好的体现&#xff0c;模板的出现就是为了更好的复用代码&#xff0c;有了它&#xff0c;我们不必写各种逻辑相同只是逻辑中的数据的类型的不同的代码&#xff0c;使得我们编写代码变得更加高效&#xff0c;下面让我们一起…

若依权限系统分析(前后端分离版)

若依权限系统分析 一&#xff1a;故事背景二&#xff1a;具体权限控制2.1 页面权限控制2.2 页面元素权限控制 三&#xff1a;实现前端鉴权3.1 封装js与权限交互3.1.1 uni-app自带uni-request与权限交互 3.2 vux状态管理3.2.1 自定义状态3.2.2 在vuex的store配置内添加我们新增的…

rust切片

这里s的不可变引用借用给了wordIndex&#xff0c;而s.clear()又想用可变引用&#xff0c;所以报错。而第一个例子中返回的usize并没有返回不可变引用。

客户端负载均衡工具Ribbon

一 什么是Ribbon Ribbon介绍 目前主流的负载方案分为以下两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如 F5&#xff09;&#xff0c;也有软件的&#xff08;比如 Nginx&#xff09;…

Ubuntu系统中分布式安装配置HBase-2.3.7

HBase是一个基于Hadoop的分布式列式数据库&#xff0c;可以存储海量的结构化和半结构化数据。本文介绍如何在三个Ubuntu系统上搭建一个HBase集群&#xff0c;并进行简单的数据操作。 在三个Ubuntu系统上分布式安装配置HBase-2.3.7&#xff0c;主要步骤包括&#xff1a; 准备工…

MySQL的执行原理

一、单表访问之索引合并 我们前边说过MySQL在一般情况下执行一个查询时最多只会用到单个二级索引&#xff0c;但存在有特殊情况&#xff0c;在这些特殊情况下也可能在一个查询中使用到多个二级索引&#xff0c;MySQL中这种使用到多个索引来完成一次查询的执行方法称之为&#…

Qgis加载在线XYZ瓦片影像服务的实践操作

目录 背景 一、XYZ瓦片相关知识 1、xyz瓦片金字塔 2、 瓦片编号 3、瓦片访问 二、在Qgis中加载在线地图 1、Qgis版本 2、瓦片加载 3、地图属性预览 总结 背景 在做电子地图应用的时候&#xff0c;很常见的会提到瓦片&#xff08;tile&#xff09;的概念&#xff0c;瓦片…