Spring-Boot基础--yaml
创始人
2024-12-28 11:39:33
0

目录

Spring-Boot配置文件

注意:

YAML简介

YAML基础语法

YAML:数据格式

YAML文件读取配置内容

逐个注入

批量注入

@ConfigurationProperties 和@value的区别

Spring-Boot配置文件

Spring-Boot中不用编写.xml文件,但是spring-Boot中还是存在.properties文件,同时还有.yml(.yaml)文件

application.properties 文件书写规则

person.name=万某

application.yml(yaml) 文件书写规则

person:     name: 万某 #不同层级之间要有缩进 #冒号后要有空格

注意:

默认配置文件名称:application

Spring-Boot中可以同时存在 三类文件,优先级为:properties > yml > yaml

YAML简介

YAML文件相对传统的.xml文件更能直观的展示数据序列化格式,更加简洁。所以在Spring-Boot中一般使用.yml(.yaml)

YAML基础语法

  1. 大小写敏感
  2. 数据值前边必须有空格,作为分隔符
  3. 使用缩进表示层级关系
  4. 缩进时使用Tab键
  5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML:数据格式

字面量:普通值 [ 数字,布尔值,字符串]

boolean: TRUE               #TRUE,true,True,FALSE,false,False均可 float: 3.14                 #6.8523015e+5 #支持科学计数法 int: 123                    #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制 string: HelloWorld			#字符串可以直接书写 

数组:一组按次序排列的值( List、set )

address:     - beijing     - shanghai  # 一行内写法 commpany: [阿里巴巴,华为,腾讯,字节跳动]

对象、Map(键值对)

person:     name: 万某  # 行内写法 person: {name: wangzhuo}  #对象数组格式一 users:     - name: Tom       age: 4     - name: Jerry       age: 5 #对象数组缩略格式 users2: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]

YAML:参数引用

name: 万某  person:     name: xuelaoshi      pet: ${name}       # 引用上边定义的name值     name: xuls${random.uuid}        # 配置文件占位符,随机uuid     name: ${person.name}_帅

YAML文件读取配置内容

推荐两种方式

逐个注入

在Controller类下给属性分别以@Value注解的方式分别赋值,@Value里的${yaml变量名}。

获取对象就对象.变量名。

获取数组就是使用索引的方式数组[0],在这里表示数组中的第一个值(上海)。

具体代码如下:录后复制

package com.imust.controller;   import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;   @RestController public class HelloController {     @Value("${name}")     private String name; //    获取对象     @Value("${person.name}")     private String person_name;       @Value("${person.age}")     private int person_age;   //    获取数组     @Value("${address[0]}")     private String address1;       @Value("${address[1]}")     private String address2;       @RequestMapping("/hello")     public String hello(){         System.out.println(name);         System.out.println(person_name);         System.out.println(person_age);         System.out.println(address1);         System.out.println(address2);         System.out.println("========================");         return "Hello,Spring Boot!";     } }

批量注入

yml文件中写入要批量导入的数据

在person类中添加ConfigurationProperties注解,和person2主名称一致

即可

@ConfigurationProperties 和@value的区别

  1. 用途和来源:‌

@Value主要用于从简单的属性文件中注入值,‌如application.propertiesapplication.yml,‌而@ConfigurationProperties则用于从带有嵌套属性的复杂配置文件中注入值。‌

  1. 类型安全性:‌

@Value不支持类型安全,‌需要进行手动类型转换,‌而@ConfigurationProperties支持类型安全,‌通过自动绑定和类型转换实现。‌

  1. 复杂性:‌

@Value适用于简单的属性注入场景,‌而@ConfigurationProperties适用于复杂的配置文件场景,‌能够处理嵌套属性、‌列表、‌集合等。‌

  1. 自定义属性:‌

@Value不支持自定义属性,‌而@ConfigurationProperties支持自定义属性,‌可以通过prefix、‌ignoreInvalidFields等参数进行配置。‌

  1. 松散绑定和SpEL支持:‌

@ConfigurationProperties支持松散绑定,‌允许在配置文件中使用不同的命名约定(‌如使用下划线、‌驼峰命名法等)‌,‌而@Value不支持松散绑定。‌此外,‌@ConfigurationProperties不支持SpEL表达式,‌而@Value支持。‌

  1. JSR303数据校验和复杂类型封装:‌

@ConfigurationProperties支持JSR303数据校验,‌而@Value不支持。‌同时,‌@ConfigurationProperties支持复杂类型的封装(‌如map)‌,‌而@Value不支持。‌

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...