Spring Boot的两种配置文件

news2025/4/8 18:07:28

在这里插入图片描述

⭐️前言⭐️

Spring Boot项目中重要的数据都是在配置文件中配置的,下边我们就来学习SpringBoot中的配置文件的具体详情。

🍉博客主页: 🍁【如风暖阳】🍁
🍉精品Java专栏【JavaEE进阶】、【JavaEE初阶】、【MySQL】、【数据结构】
🍉欢迎点赞 👍 收藏留言评论 📝私信必回哟😁

🍉本文由 【如风暖阳】 原创,首发于 CSDN🙉

🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍉博客中涉及源码及博主日常练习代码均已上传GitHub


请添加图片描述

📍内容导读📍

  • 🍅1.配置文件的作用及格式
  • 🍅2.properties 配置文件
    • 2.1 基本语法
    • 2.2 读取配置文件
    • 2.3 缺点分析
  • 🍅3.yml 配置文件
    • 3.1 文件说明
    • 3.2 基本语法
    • 3.3 进阶使用
      • 3.3.1 单双引号问题
      • 3.3.2 配置对象
      • 3.3.3 配置集合
  • 🍅4.properties VS yml

🍅1.配置文件的作用及格式

在SpringBoot的整个项目中,所有重要的数据都是在配置文件中设置的,比如:

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

如果没有配置信息,那么Spring Boot项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是非常重要的。

Spring Boot的配置文件的分类如下:
1、系统的配置文件,比如连接字符串、日志的相关设置,是系统定义好的。
2、用户自定义的。

Spring Boot的配置文件主要分为以下两种格式:

  • .properties
  • .yml
    在这里插入图片描述

propertiesyml是两个不同时代的产物,properties就属于iPhone 8,而yml属于最新的iPhone 14 pro Max,yml天然支持中文,如果要想让properties也支持中文,需要进行以下配置:

在Settings搜索栏中搜索encoding
在这里插入图片描述
然后将所有位置的编码方式都改成UTF-8
在这里插入图片描述
如果想让所有生成的新项目也同样支持中文,再在此处也进行设置:
在这里插入图片描述
两种格式的配置文件遵循以下规则:

  • 一个项目中可以存在以上两种配置文件(propertiesyml),但是不建议一个项目中出现两种配置文件。
  • 当一个项目的某个配置,出现在两种格式的配置文件中时,尼玛配置项会以properties为主(忽略yml中的配置)

🍅2.properties 配置文件

2.1 基本语法

properties是以键值对的形式配置的,Key和Value之间是以“=”连接的,如:

# 配置项目端口号
server.port=8080
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8mb4&useSSL=true
spring.datasourse.name=root
spring.datasourse.password=1234
# 自定义配置项
csdn.token=xxx

配置文件中可以使用#来添加注释信息

2.2 读取配置文件

如果想在项目中主动的读取配置文件中的内容,就可以使用@Value注解搭配${}格式来读取,如下代码所示:

@Controller
public class UserController {
    @Value("${server.port}")
    private String port;

    @PostConstruct
    public void UserController(){
        System.out.println("post:"+port);
    }
}

运行结果如下:
在这里插入图片描述

@Controller在Spring Boot启动的时候会注入到框架中,注入到框架中时会执行@PostConstruct初始化方法,这个时候就能读取到配置信息了。

2.3 缺点分析

像下图这几条配置信息,就有很多的冗余
在这里插入图片描述
如果想解决以上冗余问题,就需要使用yml配置文件了。

🍅3.yml 配置文件

3.1 文件说明

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

其有以下优点:

  • 写法简单,可读性高
  • 支持更多的数据类型
  • 可以跨语言使用,支持更多的编程语言,比如Golang、PHP、Python、Ruby等。

3.2 基本语法

yml配置文件的基础语法是Key: Value,注意keyvalue之间使用英文冒号加空格的方式组成,其中的空格不能省略。

下边将properties中的配置,在yml文件中进行表示:

# 配置项目端口号
server: 8080
# 连接数据库
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8mb4&useSSL=true
    name: root
    password: 1234
# 自定义配置项
csdn.token: xxx

两者对比:
在这里插入图片描述
yml读取配置的方法和properties读取配置的方法相同,都是使用@Value注解搭配${}格式来读取。

3.3 进阶使用

3.3.1 单双引号问题

在配置文件中加上如下配置:
在这里插入图片描述

获取配置,查看打印情况:

@Controller
public class UserController {
    @Value("${string1}")
    private String string1;

    @Value("${string2}")
    private String string2;

    @Value("${string3}")
    private String string3;

    @PostConstruct
    public void UserController(){
        System.out.println("string1:"+string1);
        System.out.println("string2:"+string2);
        System.out.println("string3:"+string3);
    }
}

在这里插入图片描述
在运行结果中可以发现,只有第三行打印结果换行了。

这是因为yml中如果使用了双引号,就会按照原语义执行(\n意为换行),如果是单引号或者什么都不加,那么默认会将字符串中的特殊字符进行自动转义,比如\n->\\n(转义)处理

3.3.2 配置对象

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

@Data
@ConfigurationProperties(prefix="student2")
@Component
public class Student {
    private int id;
    private String name;
    private int age;
}
@Controller
public class UserController {
    @Autowired
    private Student student;

    @PostConstruct
    public void UserController(){
        System.out.println("student2:"+student);
    }
}

运行结果如下:
在这里插入图片描述

3.3.3 配置集合

配置文件也可以配置list集合,如下所示:
在这里插入图片描述
集合的读取和对象一样,也是使用@ConfigurationProperties来读取的,具体实现如下:

@Component
@Data
@ConfigurationProperties("dbtypes")
public class ReadList {
    private List<String> name;
}

在这里插入图片描述

🍅4.properties VS yml

  • properties是以key=value的形式配置的键值类型的配置文件,而yml使用的是类似json格式的树形配置方式进行配置的,yml层级之间使用换行缩进的方式配置,keyvalue之间使用: 英文冒号加空格的方式设置,并且空格不可省略。
  • properties是早期并且默认的配置文件格式,但其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。
  • yml通用性更好,支持更多的语言
  • yml支持更多的数据类型,比如对象、集合等类型。

⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

请添加图片描述

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

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

相关文章

2.5D游戏,角色移动限制方法。不用空气墙。

有一个项目&#xff0c;2.5D视角。角色在设定好的路线上自由移动&#xff0c;不能超出路线。 之前的做法是用空气墙&#xff0c;设定物理碰撞&#xff0c;然后角色移动。 我感觉这种做法性能有点低。手机上体验平均帧时是4ms 于是想用空间换时间&#xff0c;将可能的运算进行预…

chrome 如何下载网站在线预览PDF文件,保存到本地

爱学习的小伙伴肯定遇到过那种只能在线看&#xff0c;但并不提供下载的的PDF文件&#xff01; 但有时候想保存到本地有很费劲。今天准备了一个很简单的方法 以这个在线pdf为例 在线PDF文件 该如何把这个PDF保存到本地呢~ 方法 1.以chrome浏览器为例&#xff0c;打开准备好的示…

iOS运行时Runtime在OC中的应用场景

本篇将会总结Rutime的具体应用实例&#xff0c;结合其动态特性&#xff0c;Runtime在开发中的应用大致分为以下几个方面&#xff1a; 一、动态方法交换&#xff1a;Method Swizzling 实现动态方法交换(Method Swizzling )是Runtime中最具盛名的应用场景&#xff0c;其原理是&a…

SpringBoot2.0中MVC和WebFlux控制层Controller对比

本篇文章是SpringBoot2.0关于Controller控制层的对比&#xff0c;相信很多开发最好奇的也是这块。那么小编就带着大家一起先来看一下尝尝鲜,本篇文章比较短小精悍,只讲如何使用,至于原理剖析,后面会讲。阅读时间大概3分钟,现在开始! 文章目录一、演示目录结构二、演示启动类定义…

昨天阅读量900多

今日阅读量还不错的样子&#xff0c;也有900多了&#xff0c;

【C语言】函数递归详解

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;鹏哥带我学c带我飞 &#x1f4ac;总结&#xff1a;希望你看…

解析davinci快捷键配置文件

davinci resolve 是一款非线性影片剪辑软件&#xff0c;mac 下快捷键配置文件位于&#xff1a; lucaslucasdeMacBook-Pro DaVinci Resolve % pwd /Users/lucas/Library/Preferences/Blackmagic Design/DaVinci Resolve lucaslucasdeMacBook-Pro DaVinci Resolve % ll | grep k…

“滴灌”代替“漫灌”:“全链路增长”的百度联盟解

作者 | 曾响铃 文 | 响铃说 2021年时&#xff0c;在平台上的日均收益才不足1000元&#xff0c;日活不足1万&#xff1b; 一年时间不到&#xff0c;现在矩阵产品在平台的日均收入已经翻了90倍&#xff0c;日活翻了25倍。 这是一家白牌资讯媒体“早闻天下事”加入百度联盟后发…

跬智信息(Kyligence)荣获浦东新区人工智能创新应用大赛一等奖

近日&#xff0c;2022 浦东新区人工智能创新应用大赛圆满闭幕。经过层层筛选和考核&#xff0c;跬智信息&#xff08;Kyligence&#xff09;从 113 支团队中脱颖而出&#xff0c;参赛项目“Byzer 面向 DataAI 的低代码开源编程语言”在技术创新性、创意性以及项目的可落地性、可…

spi访问fpga

SPI 外设的三线/四线模式及时钟极性相位可以配置&#xff0c;支持主机/从机、全双工/半双工&#xff0c;传送数据格式可灵活配置&#xff0c;并且有发送空接收满 SPI 错误等中断事件功能配合应用使用&#xff0c;更多功能详见本系列芯片手册的相关章节。 SPI四线模式框图&…

轻松玩转树莓派Pico之五、FreeRTOS体验

树莓派Pico开发板片上主芯片为RP2040单片机&#xff0c;双核 Arm Cortex-M0 处理器&#xff0c;工作主频为133MHz&#xff0c;264K片上SRAM&#xff0c;和2MByteFlash。 这么大的RAM和Flash资源&#xff0c;不跑一下RTOS操作系统实在有些可惜&#xff0c;这次就先体验一下Fre…

基于新型战争策略优化算法的光伏模型优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…

vscode通过插件一键运行 c++单元测试

gtest使用初探 简介: 本文在 ubuntu18.04 上实现了 googletest 的全局安装&#xff0c;并在一个 demo项目中演示了使用 cmake 引入了该库&#xff0c;实现了在命令行中运行 c 单元测试&#xff0c;包括运行单个 TEST 函数。另外通过 vscode 的插件 C TestMate&#xff0c; 实现…

MATLAB应用2——MATLAB串口采集加速度计数据

串口保存数据为txt格式&#xff1a; clc ; %死机的时候&#xff0c;在命令窗口输入return %getcominstrhwinfo (serial) %寻找串口 delete(instrfindall) %这句话必须有 global xx; global nn; global data1; global s; xx0; nn500; data1(1:nn)0; sserial(COM8); set(s,Bau…

什么?用Python实用脚本也能实现快速卡通画人物头像,这不就是妥妥的QQ秀嘛。

前言 今天我们就利用Python脚本实现天气查询应用吧。直接开整~ 思路分析 从大量照片/卡通数据中习得照片到卡通画的映射。 开发工具 python版本&#xff1a; 3.6 相关模块&#xff1a; pytorch 1.4 tensorflow-gpu 1.14 face-alignment dlib 1.数据准备 训练数据包括…

Linux入门—Shell常用命令之打包压缩

本文由【正厚软件】沙老师提供 打包压缩命令 1. gzip 命令 命令功能&#xff1a;压缩或展开文件 命令格式&#xff1a; ogzip [ -acdfhlLnNrtvV19 ] [-S 后缀] [ 文件名 ... ] &#xff1a;压缩文件 ogunzip [ -acfhlLnNrtvV ] [-S 后缀] [ 文件名 ... ] &#xff1a;解压缩文件…

离线安装harbor容器镜像仓库单机版(harbor-v2.3.5)

记录&#xff1a;358 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;离线部署harbor容器镜像仓库单机版&#xff0c;使用Redis为外部缓存、使用PostgreSQL为外部数据库、使用docker-ce操作容器、使用docker-compose操作harbor容器镜像仓库。 版本&#xff1a; 操作系统…

OpenAI chatGPT火爆出圈,世界悄悄发生着变化

OpenAI chatGPT火爆出圈&#xff0c;世界悄悄发生着变化一、为什么突然火起来了&#xff1f;二、ChatGPT功能实例2.1 [AI聊天](https://chat.openai.com/chat)2.2 [AI写新闻稿](https://chat.openai.com/chat)2.3 [AI写代码](https://chat.openai.com/chat)2.4 [AI写论文](http…

Kubernetes二进制单节点集群部署

Kubernetes二进制单节点集群部署 常见的K8S按照部署方式 ●Mini kube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特性使用部署地址&#xff1a; https://kubernetes.io/docs/setup/minikube ●Kubeadmin Kubea…

浅谈Kernel32.dll(Windows平台下必有的动态库文件)

今天听了前辈的黑客攻击的知识分享&#xff0c;里面比较基础的元素就是Kernel32.dll&#xff0c;我对它感兴趣好久了&#xff0c;今天搜集一些资料&#xff0c;有关Kernel32的。 目录 ​编辑 一、Kernel32介绍 二、Kernel32内存管理 三、引起Kernel32出错的主要元凶 四、解…