SpringBoot-yaml语法

news2024/12/19 17:49:08

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.coloradmin.cn/o/1487988.html

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

相关文章

windows环境下Grafana+loki+promtail入门级部署日志系统,收集Springboot(Slf4j+logback)项目日志

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

MyBatis操作数据库(XML方式)

MyBatis是一个持久层框架,和Spring没有任何关系,可以用来简化数据库的操作! 创建工作: 创建Spring Boot工程,并导入MyBatis的起步依赖,Mysql的依赖等 配置数据 #配置数据库的连接字符串 spring:datasour…

ruoyi 图片等文件资源读取

老是忘,记录一下 ResourcesConfig 文件下 /** 本地文件上传路径 */ registry.addResourceHandler(Constants.RESOURCE_PREFIX "/**").addResourceLocations("file:" RuoYiConfig.getProfile() "/"); /*** 资源映射路径 前缀*/ …

C++使用工具进阶(LOG输出、堆栈跟踪、代码结构、code review)

0. 简介 对于C,无论是大学生还是算法工程师都是非常需要学习并使用的一门语言,而C不像python、rust一样简单好用。不单单是在嵌套复杂代码后的逻辑还是各种类和堆栈的管理,都是非常头疼的问题。一般来说对于LOG类很多都是使用GLOG、而堆栈跟…

STM32 (1)

1.基本信息 stm32是由ST公司生产的一种32位微控制器(单片机)。 1.1 各种型号 stm32是32位单片机的总称,有多种不同的系列。 32即用32个比特位表示一个地址,寻址范围:0x00000000 --0xffffffff (4GB) 1.2 存储密度 …

本地如何配置支付宝模拟支付场景并结合内网穿透实现公网环境调试开发?

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

[环境配置]ssh连接报错“kex_exchange_identification: read: Connection reset by peer”

已经被VScode ssh毒死好几次了,都是执行命令意外中断,然后又VSCode里连不上、本机Terminal也连不上了。。。 重启远程服务器,VSCode可以连上了, 系统ssh还是不行,报错“kex_exchange_identification: read: Connecti…

数字化转型对企业有什么意义

降本增效,提高生产力 数字化转型可以引入自动化和智能化技术、帮助企业优化流程、减少人工操作和错误,提高工作效率和生产力。例如,使用机器人流程自动化 (RPA) 可以自动执行重复性任务,使员工能够专注于更具价值的工作。除了通过…

YOLOv5独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv5,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

5.测试教程 - 进阶篇

文章目录 1.按测试对像划分1.1**界面测试**1.2**可靠性测试**1.3**容错性测试**1.4**文档测试**1.5**兼容性测试**1.6**易用性测试**1.7**安装卸载测试**1.8**安全测试**1.9**性能测试**1.10**内存泄漏测试** 2.按是否查看代码划分2.1黑盒测试(Black-box Testing)2.2白盒测试(W…

获取properties二个键值对的值

配置文件: 将属性文件中的值赋给Java类的成员变量: 测试方法: GetMapping("/test1") public String test1(String key) {JSONObject jsonUrl JSONObject.parseObject("{"url"}");System.out.println(" …

计算机网络-网络安全(一)

1.网络安全威胁和漏洞类型: 窃听 假冒 重放 流量分析 破环完整 病毒 木马 诽谤 非授权访问 拒绝服务 漏洞:物理、软件、不兼容、其他等。 2.网络安全信息数据五大特征: 完整性&…

四川首例强生全视人工晶体在成都爱尔眼科医院成功植入

【2024年3月1日,成都】全国首批、四川首例强生全视TECNIS Symfony™ Toric IOL植入手术在成都爱尔眼科医院成功开展,手术由爱尔眼科四川省区白内障学组组长、成都爱尔眼科医院副院长巫雷教授执刀。TECNIS Symfony™ Toric IOL的成功运用,不仅…

第二十一周周报

文献阅读:Recent Advances of Monocular 2D and 3D Human Pose Estimation: A Deep Learning Perspective 摘要:在本文中,作者提供了一个全面的 2d到3d视角来解决单目人体姿态估计的问题。首先,全面总结了人体的二维和三维表征。…

思科网络设备监控

思科是 IT 行业的先驱之一,提供从交换机到刀片服务器的各种设备,以满足中小企业和企业的各种 IT 管理需求。管理充满思科的 IT 车间涉及许多管理挑战,例如监控可用性和性能、管理配置更改、存档防火墙日志、排除带宽问题等等,这需…

如何自学python

Python是一种高级编程语言,它具有简单易学、可读性强、可移植性好、功能丰富等优点,因此在许多领域都被广泛使用,如科学计算、数据分析、人工智能、Web开发、游戏开发等等。 Python具有丰富的标准库和第三方库,可以帮助程序员快速开发功能强大的应用程序。同时,Python也具…

2024.02.29作业

1. TCP模型 server #include "test.h"#define SER_IP "192.168.191.128" #define SER_PORT 9999int main(int argc, char const *argv[]) {int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sfd){perror("socket error");return -1;…

六、继承(一)

1 继承的引入 以往我们想分别实现描述学生、老师的类,可能会这样子做: class Student {string _name;string _number;int _tel;int id;string _address;int _age; }; class Teacher {string _name;int _level;int _tel;int id;string _address;int _ag…

数据中台:数字中国战略关键技术实施

这里写目录标题 前言为何要建设数据中台数据中台建设痛点数据中台学习资料聚焦前沿,方法论体系更新与时俱进,紧跟时代热点深入6大行业,提炼实践精华大咖推荐,数字化转型必备案头书 前言 在数字中国这一国家战略的牵引下&#xff0…

软考56-上午题-【数据库】-数据库设计步骤2

一、回顾:数据库设计的步骤 1、用户需求分析:手机用户需求,确定系统边界; 2、概念设计(概念结构设计):是抽象概念模型,较理想的是采用E-R方法。 3、逻辑设计:E-R图——…