SpringBoot-yaml语法

1.概念

在Springboot的项目中,配置文件有以下几种格式:

  • Application.properties
  • Application.yaml
  • Application.yml

其中官方推荐我们使用yaml的格式(因为能表示的数据类型很多样)

 

2.基本语法 

# yaml形式的配置文件

# 普通的key-value(分号之后有空格)
name: sun

# 对象类型
student:
  name: sun
  age: 18

# 对象类型的行内写法
people: {name: sun,age: 20}

# 数组
pet:
  - cat
  - dog
  - pig
    
# 数组类型的行内写法
pets: [cat,dog,pig]

3.给属性赋值

在没有使用yaml之前,我们给对象类型赋值有两种方式:

  • 使用构造方法/set方法
  • 在Spring中交给IOC赋值

下面来展示下使用Spring的注解来赋值: 

 Address类:

@Component
public class Address {
    @Value("陕西")
    private String province;
    @Value("西安")
    private String city;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}

User类: 

@Component
public class User {
    private String name;
    private Integer age;
    private Address address;

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

 springboot的测试类:

@SpringBootTest
class SpringbootWebQuickstartApplicationTests {
    @Autowired
    Address address;

    @Test
    void contextLoads() {
        System.out.println(address);
    }

}

结果: 

使用yaml配置文件格式来进行属性赋值,如下: 

 application.yaml:

user:
  name: java
  age: 20
  address:
    province: 广州
    city: 深圳

在User类上添加:

@ConfigurationProperties(prefix = "user")

将这个User类和指定的yaml文件绑定,并且将属性一一对应

  • 有个注意点:prefix属性的值必须要符合规范,即首字母小写

 4.松散绑定

上面说了,yaml文件和实体类中的属性会一一对应,那么当两者的属性名不一致的时候,还能完成映射吗?

  • yaml配置文件支持松散绑定,即当实体类中的属性名是用驼峰命名法来命名的,yaml文件中的属性是用中划线 "-" 或者下划线 "_" 来命名的,这样也能完成对应

Address实体类:

@Component
@ConfigurationProperties(prefix = "address")
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Address {

    private String provinceName;
    private String city;


}

yaml文件:

address:
  province_name: 江苏
  city: 南京

结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI Agent系列】【MetaGPT多智能体学习】4. 基于MetaGPT的Team组件开发你的第一个智能体团队

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第二篇笔记。主要是对MetaGPT中Team组件…

“智联招聘崩了?” 2024春招持续升温,求职者的热情“暴涨”到服务器都承受不住了!

2 月 28 日,”智联招聘崩了“登上微博热搜。有网友感叹,现在找工作太难了,发现有这么多人在竞争更焦虑了。 对此智联招聘回应称,由于求职流量新高,服务器过载,造成了短暂停用,但目前服务已恢复正…

设计模式(十三)抽象工厂模式

请直接看原文:设计模式(十三)抽象工厂模式_抽象工厂模式告诉我们,要针对接口而不是实现进行设计。( )-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- …

基于Mahout实现K-Means聚类

需求分析 需要对数据集进行预处理,选择合适的特征进行聚类分析,确定聚类的数量和初始中心点,调用Mahout提供的K-Means算法进行聚类计算,评估聚类结果的准确性和稳定性。同时,需要对Mahout的使用和参数调优进行深入学习…

解析社交媒体二维码生成:连接世界,拓展社交网络

随着社交媒体的普及和二维码技术的发展,社交媒体二维码作为一种新型的社交工具,逐渐受到人们的关注和喜爱。本文将探讨社交媒体二维码的定义、应用场景以及优势所在。 1. 什么是社交媒体二维码? 社交媒体二维码是将个人或企业在社交媒体平台上的信息整…

JavaSE-09(Java IO精华总结)

Java IO 简单做个总结: 1 .InputStream/OutputStream 字节流的抽象类。2 .Reader/Writer 字符流的抽象类。3 .FileInputStream/FileOutputStream 节点流:以字节为单位直接操作“文件”。4 .ByteArrayInputStream/ByteArrayOutputStream 节点流&#xff…

现在如何才能开通微信公众号留言功能?

为什么公众号没有留言功能?2018年2月12日之后直到现在,新注册公众号的运营者会发现一个问题:无论是个人还是企业的公众号,在后台都找不到留言功能了。这对公众号来说绝对是一个极差的体验,少了一个这么重要的功能&…

4. 编写app组件

1. 代码 main.ts // 引入createApp用于创建应用 import {createApp} from "vue"// 引入App根组件 import App from ./App.vue createApp(App).mount(#app) App.vue <!-- vue文件可以写三种标签1. template标签&#xff0c;写html结构2. script 脚本标签&…

Python实现向量自回归移动平均模型(VARMA算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 向量自回归移动平均模型&#xff08;Vector Autoregressive Moving Average, VARMA&#xff09;是一种…

GEE:使用ReLu激活函数对单波段图像进行变换(以NDVI为例)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上,对任意单波段影像进行 ReLu 变换的代码。并以对 NDVI 影像像素值的变换为例。 文章目录 一、ReLu激活函数1.1 什么是 ReLu 激活函数1.2 用到遥感图像上有什么用?二、代码链接三、完整代码一、ReLu激活…

电脑端微信无法打开公众号/小程序?

生气了。怎么动不动电脑端微信就打不开公众号/小程序&#xff0c;每次都要搞好久 第一步&#xff1a;打开控制面板、网络和Internet&#xff0c;选中Internet选项。 第二步&#xff1a;选中连接选项&#xff0c;并打开下方的局域网设置。 第三步&#xff1a;取消 为LAN使用代理…

横幅条(自定义控件)的编写

常可以看见ViewPager翻页视图下有几个圆点&#xff0c;并随着图片变化而变化。 我们称之为横幅条&#xff0c;横幅条自定义控件的编写有两种&#xff1a;(1)使用Paint与Canvas绘制&#xff1b;(2)使用RadioButton组合。 第一种编写方法的优势是可以显示滑动过程中的位置&#…

大模型之SORA技术学习

文章目录 sora的技术原理文字生成视频过程sora的技术优势量大质优的视频预训练库算力多&#xff0c;采样步骤多&#xff0c;更精细。GPT解释力更强&#xff0c;提示词(Prompt&#xff09;表现更好 使用场景参考 Sora改变AI认知方式&#xff0c;开启走向【世界模拟器】的史诗级的…

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行 目录 Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行前言1 使用GUI-Guider设计UI1.1 创建工程1.2 设计UI 2 ESP工程导入UI2.1 移植LVGL2.2 移植UI文件2.3 调用UI文件2.4 烧录测试 结束语 前言 GU…

(UE4升级UE5)Selected Level Actor节点升级到UE5

本问所用工具为&#xff1a; UE5 UE4 插件AssetDeveTool包含&#xff1a;快速选择功能自动化批量LOD功能自动化批量展UV功能自动化批量减面功能自动化批量修改查找替换材质功能批量重命名工具碰撞器修改工具资源整理工具支持4.26 - 5.3版本https://mbd.pub/o/bread/mbd-ZZubkp…

Manomotion 实现AR手势互动-解决手势无效的问题

之前就玩过 Manomotion &#xff0c;现在有新需求&#xff0c;重新接入发现不能用了&#xff0c;不管什么办法&#xff0c;都识别不了手势&#xff0c;我记得当初是直接调用就可以的。 经过研究发现&#xff0c;新版本SDK改了写法。下边就写一下新版本的调用&#xff0c;并且实…

Windows如何安装docker-desktop

下载 docker-desktop设置环境安装wsl可能遇到的错误 下载 docker-desktop 下载官网&#xff1a;https://www.docker.com/products/docker-desktop/ 设置环境 如果没有Hyper-V选项的,按照以下步骤 添加一个文件Hyper-V.bat 添加以下内容,并双击运行后重启电脑 pushd "%~…

Android sutdio 4.1.2版本Gradle 构建和打包慢解决方法,亲测有效

1在设置里面的Gradle 找到这个目录 进入后 新建文件&#xff0c; gradle.properties 输入设置 并保存 org.gradle.daemontrue 项目第一次加载构建过程比较慢&#xff0c;需要等&#xff0c;完成后&#xff0c;修改下面的配置 gradle-3.3-all.zip 这个文件可以先提前下载好&am…

AI日报:埃隆·马斯克起诉OpenAI

埃隆马斯克&#xff08;ElonMusk&#xff09;正在起诉OpenAI涉嫌违约&#xff0c;声称这位ChatGPT的创建者违反了其成为非营利组织的创始承诺&#xff0c;这位科技亿万富翁表示&#xff0c;他资助并培育了这一承诺。 在一份长达46页的爆炸性投诉中&#xff0c;马斯克将OpenAI首…

分布式ID生成算法|雪花算法 Snowflake | Go实现

写在前面 在分布式领域中&#xff0c;不可避免的需要生成一个全局唯一ID。而在近几年的发展中有许多分布式ID生成算法&#xff0c;比较经典的就是 Twitter 的雪花算法(Snowflake Algorithm)。当然国内也有美团的基于snowflake改进的Leaf算法。那么今天我们就来介绍一下雪花算法…