06 SpringBoot 配置文件详解-application.yaml

2024-06-14 21:12

本文主要是介绍06 SpringBoot 配置文件详解-application.yaml,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。

SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。

  • application.properties
  • application.yml
    application.properties与 application.yaml都可以作为Spring Boot的配置文件,只是书写格式不同而已,在 Spring Boot 启动时被自动读取。当然也可以同时使用,但同级目录下读取的顺序是先读取application.properties,读取application.yaml。该配置文件的存放路径如下图所示。

img

本节我们将详细介绍 application.yml的语法及使用。

YAML 简介

​ YAML 全称 YAML Ain’t Markup Language,它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。YAML文件格式是Spring Boot支持的一种JSON超集文件格式。相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml文件的工作原理和application.properties一样。

想要使用 YAML 作为属性配置文件(以 .yml 或 .yaml 结尾),需要将 SnakeYAML 库添加到 classpath 下,Spring Boot 中的 spring-boot-starter-web 或 spring-boot-starter 都对 SnakeYAML 库做了集成, 只要项目中引用了这两个 Starter 中的任何一个,Spring Boot 会自动添加 SnakeYAML 库到 classpath 下。

下面是一个简单的 application.yml 属性配置文件。

server:
port: 8081

YAML 语法

YAML 的语法如格式:

key: value

示例代码

server:

port: 8081path: /hello

YAML 的语法如下:

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。
  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
spring:profiles: devdatasource:url: jdbc:mysql://127.0.01/banchengbang_springbootusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver
类准备:
注意:使用需要添加依赖<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>User类:@Data
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "user")
public class User {private String username;private Integer age;private Book book;private Date birth;private String[] hobby;private List<String> booksName;private Map<String, Object> books;private Set<Double> salary;public User() {System.out.println("创建user bean");}
}

测试类:

@SpringBootApplication
public class SpringbootApplication {public static void main(String[] args) {//1、返回IOC容器ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args);User user =run.getBean("user",User.class);System.out.println(user.getUsername());System.out.println(user);}
}

YAML 常用写法

YAML 支持以下三种数据结构:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可拆分的值
  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义

YAML文件中的value值类型不同,写法不同。

YAML 字面量写法

​ 字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期:date、boolean、string、number、null等。
​ 在 properties中,使用“key[=]value”的形式表示一对键值对(空格不能省略),如 user.username= “xiatian”,user.age= 32。

user.username=xiatian is good

user.age=32

user.birth=2020/09/10 13:14:15

单引号与双引号区别:

双引号:不会对字符串里面的特殊字符进行转义;特殊字符会作为本身想表示的意思

user.username=“xiatian \n is good”

输出结果为:

xiatian
is good
单引号:对字符串里面的特殊字符进行转义,特殊字符最终只是一个普通的字符串数据

user.username= ‘xiatian \n is good’

输出结果为:xiatian \n is good

测试结果分别如下:
img

YAML 对象、数组、List、Map、Set的行内写法与缩进写法

​ 在 YAML 中,对象可能包含多个属性,每一个属性都是一对键值对。
YAML 为对象提供了 2 种写法:缩进式写法、行内式写法,但注意,无论是缩进写法还是行内写法,冒号后都必须有一个空格。

行内写法

# user对象 行内写法:注意冒号后空格user: {username: xiatian is good,age: 32,birth: 2020/09/10 13:14:15,# book对象 行内写法:注意冒号后空格book: {bookName: springboot , bookPrice:102},# 数组 行内写法:注意冒号后空格hobby: [篮球,足球,排球],# List 行内写法:注意冒号后空格booksname: [计算机基础,javaEE框架,springboot],# Map 行内写法:注意冒号后空格books: {key1: spring, key2: springmvc, key3: springboot,key4: springcloud,chinese: {0: 活着, 1: 孙子兵法,  2: 诗经, hz: 活着, szbf: 孙子兵法, sj: 诗经}},# Set 行内写法:注意冒号后空格salary: [6000,7000,8000]
}

缩进写法

# user对象 缩进写法:注意冒号后空格user:username: 'xiatian is good'age: 32birth: 2020/09/10 13:14:15book:bookName: springbootbookPrice: 102hobby:- 篮球- 足球- 排球booksname:- 计算机基础- javaEE框架- springbootbooks:key1: springkey2: springmvckey3: springbootkey4: springcloudchinese:0: 活着1: 孙子兵法2: 诗经hz: 活着szbf: 孙子兵法sj: 诗经salary:- 6000- 7000- 8000

行内与缩进写法结合

user:username: 'xiatian is good'age: 32birth: 2020/09/10 13:14:15book:bookName: springbootbookPrice: 102hobby: [篮球,足球,排球]booksname: [计算机基础,javaEE框架,springboot]books:key1: springkey2: springmvckey3: springbootkey4: springcloudchinese:0: 活着1: 孙子兵法2: 诗经hz: 活着szbf: 孙子兵法sj: 诗经salary: [6000,7000,8000]
测试结果如下:User(username=xiatian is good,age=32,book=Book{bookName='springboot', bookPrice=102.0},birth=Thu Sep 10 13:14:15 CST 2020,hobby=[篮球, 足球, 排球],booksName=[计算机基础, javaEE框架, springboot],books={chinese={key1=spring,key2=springmvc,key3=springboot,key4=springcloud,0=活着,1=孙子兵法,2=诗经,hz=活着,szbf=孙子兵法,sj=诗经}},salary=[6000.0, 7000.0, 8000.0]);

YAML 组织结构

一个 YAML 文件可以由一个或多个文档组成,文档之间使用“—**”作为分隔符,且个文档相互独立,互不干扰。如果 YAML 文件只包含一个文档,则“—”**分隔符可以省略。

---
代表第一个yml文档中缩进写法
website:name: bianchengbangurl: www.biancheng.net
---
代表第二个yml文档中缩进写法和行内写法都有
website: {name: bianchengbang,url: www.biancheng.net}
pets:-dog-cat-pig
---
代表第三个yml文档中缩进写法和字面量写法
pets: [dog,cat,pig]
name: "zhangsan \n lisi"
---
代表第四个yml文档中是字面量写法
name: 'zhangsan \n lisi'

这篇关于06 SpringBoot 配置文件详解-application.yaml的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061518

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可