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

news2025/3/1 11:53:41

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: 8081

path: /hello

YAML 的语法如下:

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。
  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://127.0.01/banchengbang_springboot
    username: root
    password: root
    driver-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: 32
  birth: 2020/09/10 13:14:15
  book:
    bookName: springboot
    bookPrice: 102
  hobby:
    - 篮球
    - 足球
    - 排球
  booksname:
    - 计算机基础
    - javaEE框架
    - springboot
  books:
    key1: spring
    key2: springmvc
    key3: springboot
    key4: springcloud
    chinese:
      0: 活着
      1: 孙子兵法
      2: 诗经
      hz: 活着
      szbf: 孙子兵法
      sj: 诗经
  salary:
    - 6000
    - 7000
    - 8000

行内与缩进写法结合

user:
  username: 'xiatian is good'
  age: 32
  birth: 2020/09/10 13:14:15
  book:
    bookName: springboot
    bookPrice: 102
  hobby: [篮球,足球,排球]
  booksname: [计算机基础,javaEE框架,springboot]
  books:
    key1: spring
    key2: springmvc
    key3: springboot
    key4: springcloud
    chinese:
      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: bianchengbang
  url: 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'

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

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

相关文章

L50--- 104. 二叉树的最大深度(深搜)---Java版

1.题目描述 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 2.思路 这个二叉树的结构如下&#xff1a; 根节点 1 左子节点 2 右子节点 3 左子节点 4 计算过程 从根节点 1 开始计算&#xff1a; 计算左子树的最大深度&#xff1a; 根节点 2&#xf…

QTcreator编译器路径错误,no valid kit found

重装系统后&#xff0c;整个QT的应用换了一个盘&#xff0c;但是创建QT工程时默认的编译器路径还是以前的路径且无法修改&#xff0c;创建工程时&#xff0c;出现no valid kit found 可见在option下的编译器相关路径是在E盘且无法更改 进入现在的QT盘进行文件的修改 F:\QT\Too…

UnityAPI学习之协程原理与作用

协程的原理与作用 Unity 协程(Coroutine)原理与用法详解_unity coroutine-CSDN博客 using System.Collections; using System.Collections.Generic; using UnityEngine;public class NO14_coroutine : MonoBehaviour {Animator animator;// Start is called before the first…

深入掌握SystemVerilog验证:《SystemVerilog验证 测试平台编写指南》(可下载)

在数字设计的世界中&#xff0c;验证是确保硬件设计满足预期功能和性能要求的关键步骤。SystemVerilog作为一种先进的硬件描述语言&#xff0c;以其强大的验证特性&#xff0c;成为了设计和验证工程师的首选工具。 1. SystemVerilog验证的重要性 在数字设计流程中&#xff0c…

javaWeb项目-ssm+vue在线购物系统功能介绍

本项目源码&#xff1a;java-ssmvue在线购物系统的设计与实现源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;sprin…

[Nacos]No spring.config.import property has been defined

在学习 Spring Cloud Alibaba &#xff0c;Nacos组件&#xff0c;创建一个cloudalibaba-config-nacos-client&#xff0c;加载多配置集时遇到问题 配置了 bootstrap.yml 后启动项目报错&#xff1a; 是因为在springcloud 2020.0.2版本中把bootstrap的相关依赖从spring-cloud-s…

Python 中国象棋游戏【含Python源码 MX_011期】

简介&#xff1a; 中国象棋是一种古老而深受喜爱的策略棋类游戏&#xff0c;也被称为中国的国粹之一。它在中国有着悠久的历史&#xff0c;起源可以追溯到几个世纪以前。Python 中国象棋游戏是一个用Python编程语言编写的软件程序&#xff0c;旨在模拟和提供中国象棋的游戏体验…

一键获取CPU详情:Python最强查询工具实战教程

要在 Python 中查询 CPU 信息,可以使用多个强大的工具和库.以下是一些最常用和强大的库,可以帮助你获取详细的 CPU 信息&#xff1a; 1.psutil 2.cpuinfo 3.platform 4.os 1. 使用 psutil 库 psutil 是一个跨平台库,提供了获取系统和进程信息的便捷方法.它不仅可以获取 C…

I/O Stream设计实验

实验要求和目的 深入理解java输入输出流相关类的基本用法&#xff0c;并且可以掌握Java程序的编写和调试。 实验环境 Java语言&#xff0c;PC或android平台 实验具体内容 设计和编写以下程序&#xff1a; 程序1&#xff1a; 从键盘读入多行字符串&#xff08;英文&#xf…

生产运作管理--第六版陈荣秋

第一章&#xff1a; 生产运作的分类有哪些&#xff1f; 答&#xff1a;可以分为两大类&#xff1a; 产品生产: 产品生产是通过物理或者化学作用将有形输入转化为有形输出的过程。 按照工艺过程的特点&#xff0c;可以分为&#xff1a; 连续性生产&#xff1a;物料均匀、连续的按…

右值引用和移动语义

什么是左值&#xff1f;什么是右值&#xff1f; 通俗来讲&#xff0c;可以出现在赋值语句左侧的&#xff0c;为左值&#xff1b;只能出现在赋值语句右侧的&#xff0c;为右值。 左值与右值的本质区别在于&#xff1a;左值能取地址&#xff0c;但右值不能。 本文主要通过三个场景…

Commons-io工具包与Hutool工具包

Commons-io Commons-io是apache开源基金组织提供的一组有关IO操作的开源工具包 作用:提高I0流的开发效率。 FileUtils类(文件/文件夹相关) static void copyFile(File srcFile,File destFile) 复制文件 static void copyDirectory(File srcDir,File destDir) 复…

你的职业规划就是面向贫穷的规划

如果你觉得作者的文章还有点用,请记得点赞 + 关注 说一个扎心的事实,就是我们绝大多数人的职业规划基本上都是错误的,都是面向贫穷的规划。 因为绝大多数人的职业规划都是打工人的职业规划,这种规划除了很少部分人最终能成为企业高管,实现层级跃迁外,绝大多数人在大多数…

递归解析 LXML 树并避免重复进入某个节点

1、问题背景 我们在使用 LXML 库解析 MathML 表达式时&#xff0c;可能会遇到这样一个问题&#xff1a;在递归解析过程中&#xff0c;我们可能会重复进入同一个节点&#xff0c;导致解析结果不正确。例如&#xff0c;我们希望将以下 MathML 表达式解析为 Python 表达式&#x…

DJ-122A电压继电器 柜内安装 电磁式继电器 约瑟JOSEF

系列型号&#xff1a; DJ-100A/Q系列电压继电器 DJ-111A/Q电压继电器; DJ-112A/Q电压继电器; DJ-121A/Q电压继电器; DJ-122A/Q电压继电器; DJ-131A/Q电压继电器; DJ-132A/Q电压继电器; DJ-131A/Q160CN电压继电器; DJ-131A/Q160C电压继电器; ​ 概述 DJ-100A/Q系列电…

linux安装dgl

1.DGL官网、选择与自己cuda、python版本匹配的dgl的whl文件CUDA11.8、python10并下载 2.用pip install运行 pip install /home/u2023170749/download/dgl-2.2.0cu118-cp310-cp310-manylinux1_x86_64.whl

RocketMQ在Centos7系统上单机部署

最近因为一些信创问题&#xff0c;要将RabbitMQ替换为RocketMQ&#xff0c;因此在此分享一些RocketMQ在Centos7系统上单机部署相关过程。 优缺点 RocketMQ的优点&#xff1a; 性能优越&#xff1a;RocketMQ在处理大量消息时&#xff0c;性能优于RabbitMQ。当面临每秒数万到数…

【云岚到家】-day04-2-索引同步-搜索接口

【云岚到家】-day04-2-索引同步-搜索接口 1 索引同步1.1 编写同步程序1.1.1 创建索引结构1.1.2 编写同步程序1.1.2.1 添加依赖1.1.2.2 配置连接ES1.1.2.3 编写同步程序 1.1.3 测试1.1.4 小结1.1.4.1 如何保证CanalMQ同步消息的顺序性&#xff1f;1.1.4.2 如何保证只有一个消费者…

抖店一件代发设置自动发货

工具&#xff1a;逸淘 山东逸淘软件-www.1tsoft.com-一键下单&#xff01; step1 下载插件 下载对应浏览器的插件 step2 插件安装 谷歌浏览器--右上角...--设置--扩展程序 把下载的插件从文件夹拖过来 备注&#xff1a;显示 错误 不影响使用 在浏览器网址右边--把插件固定…

香港优才自测140分,带36万+申请香港优才身份被拒了

最近又有一个朋友跟我诉说&#xff0c;一家人申请优才&#xff0c;带几十万yi民香港&#xff0c;还被拒了&#xff0c;真的好气&#xff01; 费心费力等一年以上才收到拒批通知了&#xff0c;被拒的朋友有因为资料准备不足的&#xff0c;有因为错误自测分数给入境处过高期望的&…