【Spring Boot】Spring Boot的系统配置 — 系统配置文件

系统配置文件

Spring Boot的系统配置文件,包括application.properties和application.yml配置文件的使用以及YML和Properties配置文件有什么区别,最后介绍如何更改Spring Boot的启动图案。

1.application.properties

Spring Boot支持两种不同格式的配置文件:一种是Properties,另一种是YML。Spring Boot默认使用application.properties作为系统配置文件,项目创建成功后会默认在resources目录下生成application.properties文件。该文件包含Spring Boot项目的全局配置。我们可以在application.properties文件中配置Spring Boot支持的所有配置项,比如端口号、数据库连接、日志、启动图案等。接下来将介绍在Spring Boot项目开发过程中与配置相关的一些知识。

(1)基本语法

Spring Boot项目创建成功后会默认resources目录下会自动创建application.properties文件。使用也非常简单,配置格式如下:

# 服务器端口配置
server.port=8081

在上面的示例中配置了应用的启动端口。如果不配置此项,则默认使用8080端口;如果需要使用其他端口,则通过server.port=8081修改系统启动端口。

此外,Properties文件中的配置项可以是无序的,但是为了保证配置文件清晰易读,建议把相关的配置项放在一起,比如:

在这里插入图片描述
以上示例将thymeleaf模板相关的配置放在一起,这样看起来清晰明了,从而便于快速找到thymeleaf的所有配置。

(2) 配置文件加载顺序

Spring Boot项目的配置文件默认存放在resources目录中。实际上,Spring Boot系统启动时会读取4个不同路径下的配置文件:

1)项目根目录下的config目录。

2)项目根目录。

3)classpath下的config目录。

4)classpath目录。

Spring Boot会从这4个位置全部加载主配置文件,这4个位置中的application.properties文件的优先级按照上面列出的顺序依次降低。如果同一个属性都出现在这4个文件中,则以优先级高的文件为准。

(3) 修改默认配置文件名

可能有人会问,项目的配置文件必须命名为application.properties吗?当然不是,我们可以通过修改项目启动类,调用SpringApplicationBuilder类的properties()方法来实现自定义配置文件名称。示例代码如下:

在这里插入图片描述

在上面的示例中,Spring Boot项目启动加载时默认读取更改名称的配置文件,即可修改默认加载的application.yml文件名。

2.application.yml

application.yml是以yml为后缀,使用YAML(YAML Ain’t a Markup Language)的配置文件。与XML等标记语言相比,YMAL结构更清晰易读,更适合用作属性配置文件。

(1)基本语法

YML基本语法为key:(空格)value的键值对形式,冒号后面必须加上空格。通过空格的缩进来控制属性的层级关系,只要是左对齐的一列数据,都是同一个层级的。具体格式如下:

在这里插入图片描述

在上面的示例中,自定义配置了系统的日志级别、文件路径等属性。可以看到logging下包含level和file两个子配置项。

YML文件虽然格式简洁直观,但是对格式要求较高,使用YML配置文件时需要注意以下几点:

1)属性值和冒号中间必须有空格,如name: Weiz正确,使用name:Weiz就会报错。
2)需要注意各属性之间的缩进和对齐。
3)缩进不允许使用tab,只允许空格。
4)属性和值区分字母大小写。

(2)数据类型

YML文件以数据为中心,支持数组、JSON对象、Map等多种数据格式,因此更适合用作配置文件。

(1)普通的值(数字、字符串、布尔值)

普通的数据通过k:v的键值对形式直接编写,普通的值类型或字符串默认不用加上单引号或者双引号。

当然,也可以使用双引号(“”)来转义字符串中的特殊字符,特殊字符转义后就表示它自身的意思,例如:

name: "zhangsan \n lisi"

上面的示例会输出:

zhangsan
lisi

使用单引号(‘’)不会转义特殊字符,所有字符都按照普通字符处理,作为字符串数据,例如:

name: 'zhangsan \n lisi'

上面的示例会输出:zhangsan \n lisi。“\n”字符作为普通的字符串,而不转义为换行。

(2)对象、Map(属性和值)

对象同样是以k:v的键值对方式展现的,只是对象的各个属性和值的关系通过换行和缩进方式来编写。示例代码如下:

person:lastName: zhangsanage: 20

如果使用行内写法,可以将对象的属性和值写成JSON格式,具体写法如下:

person: {lastName: zhangsan, age: 20}

(3)数组(List、Set)

数组是以- value的形式表示数组中的元素的,具体写法如下:

persons:-zhangsan-lisi-wangwu

还可以采用行内写法,数组使用中括号的形式,具体写法如下:

persons: [zhangsan, lisi, wangwu]

我们可以看到,YML文件除了支持基本的数据类型之外,还支持对象、Map、JSON、数组等格式,这样可以在配置文件中直接定义想要的数据类型,无须额外转换。这也是程序员喜欢用application.yml的原因之一。

3.Properties与YML配置文件的区别

Spring Boot中的配置文件有Properties或者YML两种格式。一般情况下,两者可以随意使用,我们可以根据自己的使用习惯选择适合的配置文件格式。这两者完全一样吗?肯定不是,YML和Properties配置文件的区别如下:

1)YML文件以数据为中心,对于数据的支持和展现非常友好。

2)Properties文件对格式的要求没那么严格,而YML文件以空格的缩进来控制层级关系,对格式的要求比较高,缩进格式不对时容易出错。

3)Properties文件支持@PropertySource注解,而YML文件不支持。

4)YML文件支持多文档块的使用方式,使用起来非常灵活。

5)Properties配置的优先级高于YML文件。因为YML文件的加载顺序先于Properties文件,如果两个文件存在相同的配置,后面加载的Properties中的配置会覆盖前面YML中的配置。

4.实战:自定义系统的启动图案

我们知道Spring Boot程序启动时,控制台会输出由一串字符组成的Spring符号的启动图案(Banner)以及版本信息(见下图)。

在这里插入图片描述

Spring Boot自带的启动图案是否可以自定义呢?

答案是肯定的。下面通过示例来演示如何自定义Spring Boot的启动图案。

步骤01 在项目的resources目录下新建banner.txt,示例代码如下:

在这里插入图片描述
在上面的配置中,通过${}获取application.properties配置文件中的相关配置信息,如Spring Boot版本、应用的版本、应用名称等信息。

${AnsiColor.BRIGHT_RED}:设置控制台中输出内容的颜色,可以自定义,具体参考org.springframework.boot.ansi.AnsiColor。
${application.version}:用来获取MANIFEST.MF文件中的版本号,这就是在Application.java中指定SpringVersion.class的原因。
${application.formatted-version}:格式化后的{application.version}版本信息。
${spring-boot.version}:Spring Boot的版本号。
${spring-boot.formatted-version}:格式化后的{spring-boot.version}版本信息。步骤02 在application.properties中配置banner.txt的路径等信息。

步骤02 在application.properties中配置banner.txt的路径等信息。

在这里插入图片描述

在上面的配置中,在application中设置banner.txt文件的路径、应用的版本、Spring Boot的版本等信息。

步骤03 启动项目,查看修改之后的启动横幅图案是否生效,如图所示。

在这里插入图片描述

通过系统输出的启动日志可以看到,系统的启动图案已经变成我们自定义的样子,也就是Spring Boot的默认启动图案已经更改成自定义的启动图案。

Spring Boot也支持使用GIF、JPG和PNG格式的图片文件来定义横幅图案。当然,并不会把图片直接输出在控制台上,而是将图片中的像素解析并转换成ASCII编码字符之后再输出到控制台上。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle初级

目录 概念 数据库分类 Oracle 存储结构 安装成功 ​编辑 创建用户和表空间 以超级管理员身份登录 创建表空间 创建用户 给用户授权 查询测试 概念 数据库(database): 物理操作系统文件或磁盘的集合。简单来说数据库的意思是数据的集合。 DBM…

Leetcode每日一题:931. 下降路径最小和(2023.7.13 C++)

目录 931. 下降路径最小和 题目描述: 实现代码与解析: 动态规划 原理思路: 931. 下降路径最小和 题目描述: 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降…

前端Vue自定义商品订单星级评分 爱心评分组件

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 LangChain 集成搭建智能文档问答系统

目录 准备工作 主要参数 准备数据 开始提问 本文将演示如何使用 Zilliz Cloud 和 LangChain 搭建基于大语言模型(LLM)的问答系统。在本例中,我们将使用一个 1 CU 的 Cluster,还将使用 OpenAI 的 Embedding API 来获取指定文本的向量表示。现在就让我们开始吧。 准备工作…

【Ajax】Express 服务端框架

因为Ajax需要向服务端发送请求。Express框架比较简单,内容使用起来比较少,借助一个基本功能就可以了。 Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架 所以需要安装一下node.js 检查命名:node -v 安装 打开项目最外…

GTK列表显示文本和图片

使用GtkTreeView控件显示包含文本和图片的列表,GtkTreeView/GtkListStore或者GtkTreeView/GtkTreeModel使用的是MVC设计理念。 关于MVC: M层: model 数据模型层(处理数据的增删改查) 提供数据 V层: Views 视图层 (数据展示) 渲染数据 C层: controller 控制层(处理业…

window电脑修复网络不能正常

问题描述 问题的起点是我打开了OpenAPI公司的GPT,在回答的过程中响应很慢,然后自己开始尝试切换连接的服务器(这里使用到了网络代理),最后自己做了一个操作是 代理软件的这个菜单里面的增强模式选项,结果…

Flink基本原理剖析讲解

1.Flink简介 Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理,是业界最顶级的开源流处理引擎。 Flink最适合的应用场景是低时延的数据处理(Data Processing…

Proton 推出开源密码管理器,兼身份管理器

Proton 是由来自欧洲核研究组织 (CERN) 的科学家于 2014 年在瑞士日内瓦创立的一家公司,其最知名的应该就是电子邮件服务 Proton Mail,主打端到端加密、安全和隐私保护。Proton 由科学家领导,其中包括万维网的发明者 Tim Berners-Lee。 该公…

git HEAD detached from

git HEAD detached from 解决,checkout切换分支即可,比如切换到master分支: git checkout master git gerrit code review提交代码HEAD:resf/for/_res/for的提交格式_zhangphil的博客-CSDN博客git gerrit code review提交代码HEAD:resf/for/如…

Flink实时任务性能调优

前言 通常我们在开发完Flink任务提交运行后,需要对任务的参数进行一些调整,通常需要调整的情况是任务消费速度跟不上数据写入速度,从而导致实时任务出现反压、内存GC频繁(FullGC)频繁、内存溢出导致TaskManager被Kill…

OpenCV 入门教程: Harris角点检测

OpenCV 入门教程: Harris 角点检测 导语一、Harris角点检测原理二、Harris角点检测步骤三、示例应用总结 导语 Harris 角点检测是图像处理中常用的角点检测算法,用于寻找图像中的角点特征。角点是图像中具有明显边缘变化的位置,具有独特性和不…