【JavaEE进阶】——第六节.SpringBoot配置文件介绍

news2024/10/5 21:16:20

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:JavaEE进阶

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!

文章目录

前言

一、配置文件概述

1.1 配置文件的作用

1.2 配置文件的格式

二、application.properties 配置文件 

2.1 基本语法

2.2 读取配置文件

三、application.yml 配置文件

3.1 基本语法

3.2 读取yml中的配置

1、yml配置的简单读取

2、读取yml 配置中不同数据类型及 null 

3.读取yml配置文件的补充\

3.3 yml配置对象

3.4 yml配置集合

四、Properties VS yml 总结和补充

4.1 关于properites的乱码问题

总结



 前言

本节课我们将开始进入到springboot的学习当中;主要介绍springboot的配置文件;主要有application.properties 配置文件 和 application.yml 配置文件两种;


一、配置文件概述

1.1 配置文件的作用

整个项目中所有重要的数据都是在配置文件中配置的;

比如:

1、数据库的连接信息(包含用户名和密码的设置)
2、项目的启动端口
3、第三方系统的调用密钥等信息
4、用于发现和定位问题的普通日志 和 异常日志 等。
5、还可以配置 日志的级别(规定只显示达到某个级别的日志),以及日志的持久化存储

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

配置文件还有一个优点:

配置文件可以设置 开发环境 和 测试环境,两个配置文件。

然后呢,在运行打包的时候,通过修改一个变量,就可以指定 当前项目 “走”哪一个配置文件。

所以,配置文件之间是可以并存的!

意思就是:
可以将两个,或两个以上的配置文件(开发的,测试的,运维的),项目上线的时候,我们只需要改一个参数,改一个名字。

然后,项目中所有的内容,全部都会走 另一个配置文件。非常方便!

补充:

配置文件的分类,里面的内容可以分为两个类:

  • 1、系统级别的
  • 2、自定义级别的

1.2 配置文件的格式

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

  • 1、.properties
  • 2、.yml

【文件的后缀代表着文件的格式;配置文件也是如此!!!】

至于为什么要有两种格式?

这两者之间的关系,就像前面讲Bean 作用域 和 生命周期中的 @PostConstruct 与 init- method 之间的关系一样。
两者的功能是一样的,但是!是来自于 两个不同时间段 的 产物。

最早出现的配合文件格式是 .properties。
然后,在后期的使用中发现: properties 存在着一些缺陷。
那么,自然就会产生一个想法:properties 该怎么去优化?
于是,.yml 格式的配置文件,就诞生了。
这就和 maven 和 gradle 之间的关系一样。
gradle 是 maven 的升级版。
我们的 .yml格式的配置文件,就是 .properties格式配置文件 的 升级版。

注意:

前面讲过:一个项目中,可以存在多个配置文件。
即:配置文件之间是可以共存的!

也就是说:我们可以直接在项目中传建其他的配置文件,格式可以不同


二、application.properties 配置文件 

2.1 基本语法

语法格式:

而且注意:

在填写完后面的 value 值 之后,也不能加上一个空格。 会出事!!!

 后果:
设置端口号:

另外,我们还可以自定义键值对。【上面的是系统级别的配置】

因为我们已经把项目的端口号改成了9090,所有你再启动项目的时候端口号就变了 


2.2 读取配置文件

到了 Spring Boot 时代,几乎所有的功能,都可以通过 注解来搞定。读取配置文件也是一样的;

可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取.

在配置文件中用户可自定义各自类型的数据 


三、application.yml 配置文件

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

yml 是⼀个可读性⾼,易于理解,⽤来表达数据序列化的格式。

它的语法和其他⾼级语⾔类似(与 json 格式类似,键值对之间使用冒号+空格,进行分隔),并且可以简单表达清单(数组)、散列表,对象,标量,布尔,int等数据形态,甚至连 null 都可以设置!!!

它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。

yml 最⼤的优势是

可以跨语⾔,不止是 Java 中可以使⽤。golang、python 都可以使⽤ yml 作为配置⽂件。

总结下来, yml 配置文件一共有三个优点:

1、写法简单
2、支持多种数据类型
3、支持跨语言

上述这三个优点,都是 properties 配置文件所不具备的。


3.1 基本语法

yml 是树形结构的配置⽂件,它的基础语法是“key: value”

注意: key 和 value 之间使⽤英文冒号加空格的方式组成的,其中的空格不可省略。

上面我们说了一个项目中,可以存在多个配置文件。

那么我们可以直接在项目中创建其他的配置文件,格式可以不同;

当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以properties 为主(忽略 yml 中的配置)。 

但其实与上面的application.properties相比,.yml配置文件还是挺好用的。


3.2 读取yml中的配置

1、yml配置的简单读取

这个和对properitices的读取是相同;


2、读取yml 配置中不同数据类型及 null 


3.读取yml配置文件的补充\

先来看一个例子:

yml字符串修饰符的问题:

 


3.3 yml配置对象

我们可以在 yml 中配置对象,如下配置:

那么怎么读取我们yml中的配置文件呢?

可能你会说:还用@Value("${mykey.key}")不行吗?

答案是不行,我们要用的专门的类做这一件事:

 


3.4 yml配置集合

首先我们在yml配置文件里把集合配置上:

那么接下来我们看看是怎么读取集合的 :
集合的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,创建一个类并在该类中设置一个集合属性,具体实现如下:


四、Properties VS yml 总结和补充

1、properties 是以 key=value 的形式配置的键值类型的配置⽂件;

      yml 使用的是类似 json 格式的树形配置⽅式进⾏配置的.

key 和 value 之间使⽤“: ”(英⽂)冒号加空格的⽅式设置并且空格不可省略;

yml 层级之间使用换行缩进的方式配置。


2.properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据;

使⽤ yml 可以很好的解决数据冗余的问题。


3.yml 通用性更好,支持更多语言,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置文件作为 Java 和 Go 的共同配置文件。


4、yml 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件。

当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以properties 为主(忽略 yml 中的配置)。


4.1 关于properites的乱码问题

原因:

这是因为 application.properties 是属于早期的配置文件,而早期的 配置文件是不支持中文的。
而 yml 是天生就支持中文的(utf8)。

要想 application.properties 支持中文,需要进行配置。

 配置方法:


总结

今天的内容就介绍到这里,我们下一期内容再见!!!!!!!

 

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

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

相关文章

深度学习框架-Caffe:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术,已经在许多领域中得到广泛的应用,如计算机视觉、自然语言处理、语音识别等。在深度学习中,深度学习框架扮演着重要的角色。Caffe是一种广泛使用的深度学习框架,它在许多方面都有所改进&#xff0c…

基于Android的运动健身减肥管理系统设计与实现

一、项目介绍​ Android客户端功能描述: 1:登录注册:第一次输入用户名密码之后,再次打开登录页面,页面上自动填充上次输入的用户名和密码,登录使用图形验证码验证,登录成功之后,再…

两种鲸鱼优化算法 (whale optimization algorithm, WOA)及仿真实验——附代码

目录 摘要: 算法设计: WOA总体流程图如下: 增强型WOA(E-WOA) 仿真运行效果: 完整程序: 摘要: 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯…

PM861K01 3BSE018105R1协作机器人机械臂的每个轴上会安装扭矩传感器,用于测量轴电机和变速箱内的机械张力

​ PM861K01 3BSE018105R1协作机器人机械臂的每个轴上会安装扭矩传感器,用于测量轴电机和变速箱内的机械张力 机器人在工业领域已经存在了几十年的时间,但技术创新正在推动全新一轮的工厂自动化趋势。对于那些曾经负担不起(或者不需要&…

Spring 中 @NotEmpty、@NotBlank、@NotNull,傻傻分不清楚!

1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.5.RELEASE</version> </dependency>NotEmpty、NotBlank、NotNull 包的位置&#xff1…

智驾芯片市场要“变天”,这家中国厂商如何成为“量产先锋”?

中国智能驾驶芯片的量产之战&#xff0c;正在高歌猛进。 5月19日&#xff0c;黑芝麻智能宣布获得一汽红旗下一代FEEA3.0电子架构平台项目量产智驾芯片定点。据了解&#xff0c;基于黑芝麻智能华山二号A1000L系列芯片&#xff0c;一汽红旗将打造非分时复用的高性价比行泊一体自…

OpenHarmony社区运营报告(2023年4月)

本月快讯 • 2023年4月9日&#xff0c;OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;3.2 Release新版本发布。相比一年前的OpenHarmony 3.1 Release版本&#xff0c;新版本的系统能力、系统整体性能、稳定性和安全性都进一步得到提升和完善&#xff1b…

小兔鲜项目----vue3入门

目录 认识Vue3 为什么需要学Vue3? Vue3组合式API体验 Vue3更多的优势 使用create-vue搭建Vue3项目 认识 create-vue 使用create-vue创建项目 熟悉项目目录和关键文件 组合式API - setup选项 setup选项的写法和执行时机 setup选项中写代码的特点 组合式API - reactive和…

SEO优化需要天天更新文章吗?

SEO优化并不要求每天都更新文章。 更新频率取决于你网站的内容类型、目标受众和业务需求。以下是一些建议&#xff1a; 高质量内容&#xff1a;关键是提供有价值且吸引人的内容。不要为了更新而随意发布低质量或重复的内容。确保你的文章有深度、独特性和相关性&#xff0c;以…

出现小红书负面笔记怎么维护,需要注意什么

很多时候&#xff0c;我们在品牌发布的过程中&#xff0c;都会遭受到来自各方不同的恶意。比如&#xff0c;品牌在小红书遇到同行或者写手恶意笔记&#xff0c;这个时候&#xff0c;大家肯定想要的就是不要负面笔记。今天来和大家分享下出现小红书负面笔记怎么维护&#xff0c;…

C++程序在Windows系统上启动失败与运行卡死问题排查实战

目录 1、VS2017默认编译出来的程序&#xff0c;不支持XP系统 1.1、新版本软件为什么要选择VS2017&#xff1f; 1.2、VS2017如何配置才能编出支持XP系统的程序&#xff1f; 1.3、最终选择使用VS2010编出的版本 2、程序在XP系统中启动报错&#xff0c;无法启动 2.1、提示在…

浅谈元年方舟数据中台之标签管理平台

在现如今的大数据时代&#xff0c;相信大家一定了解或者听说过下列几个场景&#xff1a; 购物APP&#xff1a;千人千面&#xff0c;意思不同用户使用相关的产品感觉是不一样的&#xff0c;不同用户看到的购物APP首页推荐内容和其他相关推荐流信息可能是完全不同的。 社交APP&a…

【MySQL新手到通关】第一章 数据库概述

文章目录 1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系 3. MySQL介绍3.1 概述3.2 关于MySQL 8.03.3 为什么选择 MySQL3.4 Oracle vs MySQL 4. RDBMS 与 非RDBMS4.1 关系型数据库4.1.1 实质4.1.2 优势 4.2 非关系型数据…

基于QEMU的RISC-V架构linux系统开发(二)——RISC-V的Linux内核移植

1.在国内linux镜像源&#xff08;网易&#xff09;linux内核稳定版本V5.15.73&#xff08;注意&#xff1a;因为buildroot不支持最新版本&#xff0c;因此不下载最新版本&#xff09;的版本源码&#xff0c;链接如下所示&#xff1a; http://mirrors.163.com/kernel/v5.x/ 图1…

Linux 常用远程连接工具你用过几个?

想必大家对linux不陌生&#xff0c;但是一提起如何远程连接它可能一头雾水&#xff0c;今天通过下面的几个工具来简单探讨一下常用的linux远程连接工具的使用&#xff0c;希望对你的日常使用有所帮助。 1、Xshell 介绍&#xff1a; xshell 是一个非常强大的安全终端模拟软件…

如何借助Kafka持久化存储K8S事件数据?

大家应该对 Kubernetes Events 并不陌生&#xff0c;特别是当你使用 kubectl describe 命令或 Event API 资源来了解集群中的故障时。 $ kubectl get events15m Warning FailedCreate …

c语言笔试题整理

1、请填写 bool , float, 指针变量 与 “零值” 比较的 if 语句。 提示&#xff1a;这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。 例如int 变量n 与“零值”比较的if 语句为&#xff1a; if ( n 0 ) if ( n ! 0 ) 以此类推。 (1&#xff09;请写出bool flag 与“零值…

陪诊系统源码|陪诊系统开发|陪诊小程序源码

随着医疗技术的不断发展&#xff0c;陪诊已经成为了一个非常普遍的现象。随之而来的&#xff0c;就是一款名为“陪诊小程序”的应用产品的诞生。这款小程序通过互联网技术来提供陪诊服务&#xff0c;包含了很多实用功能。下面&#xff0c;我们就来详细介绍一下陪诊小程序的功能…

【历史上的今天】5 月 22 日:Windows 3.0 发布;虚幻引擎诞生;《吃豆人》问世

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 5 月 22 日&#xff0c;在 1994 年的今天&#xff0c;知名中文论坛曙光 BBS 站开通。1994 年 4 月 20 日&#xff0c;建立在中科院和北京大学、清华大学之间的…