重生之 SpringBoot3 入門保姆級學習(08、properties 和 yml 表示復雜對象)

重生之 SpringBoot3 入門保姆級學習(08、properties 和 yml 表示復雜對象)

    • 2.5 yml 配置文件
    • 2.6 復雜對象用 properties 表示
    • 2.7 復雜對象用 yml 表示

2.5 yml 配置文件


  • application.properties 配置文件書寫形式
server.port=9999spring.data.redis.host=localhost
spring.data.redis.port=6379
  • application.yml 配置文件書寫形式
server:port: 9999spring:data:redis:host: localhostport: 6379

application.yml 的區別:

1、k: v 構成 k: 后面必須有空格,k: 是固定的

2、屬性之間有層級關系,相同層級屬性空格相同

2.6 復雜對象用 properties 表示


  • 在 pom.xml 中引用 lombok 刷新后 并 使用 lombok 插件生成 getter、setter、有參構造、無參構造。
    • @data 生成 getter、setter
    • @AllArgsConstructor 有參構造
    • @NoArgsConstructor 無參構造
    <dependencies><!--springboot3 Web 依賴--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--redis starter 依賴--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--lombok 依賴--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
  • 創建 Cat 類
package com.zhong.dao;import lombok.Data;/*** @ClassName : Cat* @Description :* @Author : zhx* @Date: 2024-05-27 20:42*/
@Data
public class Cat {private String name;private Integer age;
}
  • 創建 Dog 類
package com.zhong.dao;import lombok.Data;/*** @ClassName : Dog* @Description :* @Author : zhx* @Date: 2024-05-27 20:42*/
@Data
public class Dog {private String name;private Integer age;
}
  • 創建 Child 類
package com.zhong.dao;import lombok.Data;import java.util.Date;
import java.util.List;/*** @ClassName : Child* @Description :* @Author : zhx* @Date: 2024-05-27 20:40*/
@Data
public class Child {private String name;private Integer age;private Date birthDay;private List<String> text;
}
  • 創建 Person 類
package com.zhong.dao;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.List;
import java.util.Map;/*** @ClassName : Person* @Description :* @Author : zhx* @Date: 2024-05-27 20:38*/
@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {private String name;private Integer age;private Date brithDay;private Boolean like;private Child child; // 嵌套對象private List<Dog> dogs; // 數組里面嵌套對象private Map<String, Cat> cats;  // Map 里面嵌套對象@Overridepublic String toString() {return "Person{" +"\n\tname='" + name + '\'' +", age=" + age +", brithDay=" + brithDay +", like=" + like +", \n\tchild=" + child +", \n\tdogs=" + dogs +", \n\tcats=" + cats +"\n}";}
}
  • application.properties
person.name=鐘宏雄
person.age=23
person.brith-day=2024/05/27 21:06:06
person.like=true
person.child.name=小貓
person.child.age=10
person.child.brith-day=2014/05/27 21:06:06
person.child.text[0]=abc
person.child.text[1]=xyz
person.dogs[0].name=小黑
person.dogs[0].age=8
person.dogs[1].name=小白
person.dogs[1].age=6
person.cats.c1.name=小藍
person.cats.c1.age=10
person.cats.c2.name=小灰
person.cats.c2.age=20
  • 輸出程序 MainApplication
package com.zhong;import com.zhong.dao.Person;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @ClassName : MainApplication* @Description : 啟動 SpringBoot 項目的入口程序* @Author : zhx* @Date: 2024-05-20 16:20*/
@SpringBootApplication  // 標識這是一個 SpringBoot 應用
public class MainApplication {public static void main(String[] args) {var ioc = SpringApplication.run(MainApplication.class, args);Person bean = ioc.getBean(Person.class);System.out.println(bean);}
}
  • 輸出結果
Person{name='鐘宏雄', age=23, brithDay=Mon May 27 21:06:06 CST 2024, like=true, child=Child(name=小貓, age=10, birthDay=null, text=[abc, xyz]), dogs=[Dog(name=小黑, age=8), Dog(name=小白, age=6)], cats={c1=Cat(name=小藍, age=10), c2=Cat(name=小灰, age=20)}
}

2.7 復雜對象用 yml 表示


注釋掉 application.properties 的內容

  • application.yml(對比 application.properties 的寫法)
person:name: 王萍age: 21brith-day: 2024/05/27 21:06:06like: truechild:name: 小狗age: 10birthDay: 2024/05/27 21:06:06text[0]: deftext[1]: uvwdogs[0]:name: 小綠age: 10dogs[1]:name: 小黃age: 20cats.c1:name: 小橙age: 10cats.c2:name: 小青age: 20
  • 標準寫法
person:name: 王萍age: 21brith-day: 2024/05/27 21:06:06like: truechild:name: 小狗age: 10birthDay: 2024/05/27 21:06:06#    text: ["def", "uvw"]text:- def- uvwdogs:- name: 小綠age: 10- name: 小黃age: 20cats:c1:name: 小橙age: 10c2: {name:小青, age: 2}   # 對象也可以使用 {key:value} 表示
  • 輸出結果
Person{name='王萍', age=21, brithDay=Mon May 27 21:06:06 CST 2024, like=true, child=Child(name=小狗, age=10, birthDay=Mon May 27 21:06:06 CST 2024, text=[def, uvw]), dogs=[Dog(name=小綠, age=10), Dog(name=小黃, age=20)], cats={c1=Cat(name=小橙, age=10), c2=Cat(name=小青, age=20)}
}

語法細節

  • birthDay 推薦寫為 birth-day
  • 文本:
    • 單引號不會轉義( \n 則為普通字符顯示)
    • 雙引號會轉義 ( \n 則為換行)
  • 大文本:
    • | 開頭,大文本寫在下層,保留文本格式,換行符正確顯示
    • > 開頭,大文本寫在下層,折疊換行符
  • 多文檔合并
    • 使用 — 可以把多個 yaml 文檔合并在一個文檔中,每個文檔區依然認為內容獨立

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18748.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18748.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Let‘s Encrypt 免費證書申請

填寫郵箱&#xff0c;申請的域名 單域名&#xff1a;www.example.com 泛域名&#xff1a; *.example.com yum -y install certbot sudo certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --email xxexample…

第23講:Ceph集群RBD塊存儲的離線備份與還原

文章目錄 1.RBD塊存儲的離線備份機制2.RBD塊存儲的備份導出操作2.1.為RBD塊存儲設備創建一個快照2.2.基于快照文件備份到本地系統2.3.基于塊設備備份到本地系統 3.RBD塊存儲的備份還原導入操作4.RBD塊存儲的增量備份與增量還原4.1.增量備份的操作4.2.增量備份的還原操作 1.RBD塊…

從零開始學React--環境搭建

React官網 快速入門 – React 中文文檔 1.搭建環境 下載nodejs,雙擊安裝 nodejs下載地址 更新npm npm install -g npm 設置npm源&#xff0c;加快下載速度 npm config set registry https://registry.npmmirror.com 創建一個react應用 npx create-react-app react-ba…

Nginx的配置與調試

目錄 1、安裝Nginx 2、Nginx的配置文件結構 2.1 Nginx的全局配置 2.2 HTTP服務器配置 2.3 HttpGzip模塊配置 2.4 負載均衡配置 2.5 server虛擬主機配置 2.6 location URL匹配配置 2.7 StubStatus模塊配置 1、安裝Nginx 在安裝Nginx之前&#xff0c;需確保系統已經安裝…

202303青少年軟件編程(Python)等級考試試卷(四級)

第 1 題 【單選題】 運行下列程序, 輸出的結果是? ( ) def wenhao(name = zhejiang):print(hello + name)wenhao()A :hello B :hellozhejiang C :helloname D :程序將提示運行錯誤 正確答案:B 試題解析: 定義函數時, 可以指定形參的默認值。 如果在調用函數時給函數…

SpringBoot如何使用日志Logback,及日志等級詳解

Spring Boot默認已經集成了SLF4J&#xff08;Simple Logging Facade for Java&#xff09;作為日志的接口&#xff0c;以及Logback作為日志的實現。這意味著在大多數情況下&#xff0c;你無需做額外的配置即可開始記錄日志。 下面是一個簡要的指南&#xff0c;包括如何在Spring…

豆瓣內容抓取:使用R、httr和XML庫的完整教程

概述 在數據分析和統計領域&#xff0c;R語言以其強大的數據處理能力和豐富的包庫資源而聞名。它不僅提供了一個靈活的編程環境&#xff0c;還擁有專門用于數據抓取和處理的工具&#xff0c;如httr和XML庫。這些工具使得從各種網站上抓取數據變得簡單而高效。 豆瓣網站作為一個…

Android環境下Mesa初始化流程重學習之eglCreateContext

Mesa初始化流程重學習之eglCreateContext 引言 沒有啥好說的了&#xff0c;直接上手擼代碼&#xff01;總得找點事情干不是!我打工我快樂&#xff01;我奮斗&#xff0c;我快樂&#xff01; 一. 核心結構體之間的關聯 二. eglCreateContext流程分析 eglCreateContext(...)//s…

紅酒配餐中的酒杯選擇與使用技巧

在紅酒配餐中&#xff0c;酒杯的選擇與使用技巧是影響品鑒體驗的重要因素。合適的酒杯不僅能展現出紅酒的優雅和風味&#xff0c;還能提升用餐的儀式感和愉悅感。云倉酒莊雷盛紅酒以其卓著的品質和豐富的口感&#xff0c;成為了紅酒愛好者們的首要選擇品牌。下面將介紹在紅酒配…

21張讓你代碼能力突飛猛進Python速查表(神經網絡、線性代數、可視化等)(有中文版)

隨著深度學習的蓬勃發展&#xff0c;越來越多的小伙伴們開始使用python作為主打代碼&#xff0c;python有著種類繁多的第三方庫&#xff0c;這里為大家從網絡上收集了一些代碼速查表&#xff0c;希望可以幫你在碼代碼時提速。 基礎 神經網絡 線性代數 Python資料 可以去VX公…

python標準庫argparse,腳本傳參

argparse 是 Python 的標準庫之一&#xff0c;它用于編寫用戶友好的命令行接口。通過 argparse&#xff0c;你可以很容易地為你的 Python 腳本添加命令行參數和選項&#xff0c;并解析它們。下面是一個簡單的介紹和示例 # 導入庫 import argparse# 定義命令行解析器對象 parse…

JavaScript 日期和時間的格式化

JavaScript 日期和時間的格式化 一、日期和時間的格式化 1、原生方法 1.1、使用 toLocaleString 方法 Date 對象有一個 toLocaleString 方法&#xff0c;該方法可以根據本地時間和地區設置格式化日期時間。例如&#xff1a; const date new Date(); console.log(date.toL…

buuctf_RE

[WMCTF2020]easy_re 簡單輸入flag 但是下斷點后&#xff0c;還沒走幾步就報錯退出了。 確實沒有打印的字符串 main函數也看不懂在干嘛 int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v4; // r13char v5; // r12__int64 v6; // rax_QWORD *v7;…

python計算開始時間到結束時間步長一個小時

為了計算從開始時間到結束時間&#xff0c;每隔一小時的時間間隔&#xff0c;你可以使用Python的datetime模塊來處理日期和時間。以下是一個簡單的例子&#xff0c;它生成從開始時間到結束時間每隔一小時的時間列表。 from datetime import datetime, timedelta# 開始時間 sta…

SylixOS 版本與 RealEvo-IDE 版本對應關系說明

SylixOS 版本與 RealEvo-IDE 版本對應關系說明 SylixOS 版本IDE 版本發布日期1.4.13.1.52017/01/171.5.23.5.12017/10/121.7.13.8.32018/06/221.8.33.9.52018/10/081.9.9-103.9.102020/01/021.11.63.10.22020/05/131.11.73.10.x2020/06/121.12.93.11.02020/09/111.12.11&#…

多輸入多輸出 | MATLAB實現BiTCN(雙向時間卷積神經網絡)多輸入多輸出預測

多輸入多輸出 | MATLAB實現BiTCN(雙向時間卷積神經網絡)多輸入多輸出預測 目錄 多輸入多輸出 | MATLAB實現BiTCN(雙向時間卷積神經網絡)多輸入多輸出預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 Matlab實現BiTCN雙向時間卷積神經網絡多輸入多輸出預測 1.data為數據…

json格式文件備份redis數據庫 工具

背景&#xff1a; 項目組要求使用 json備份redis緩存數據庫內容。 附件里工具是一個包含redis-dump工具的鏡像文件&#xff0c;方便用戶在局域網中使用容器備份redis緩存數據庫。 使用步驟&#xff1a; 解壓tar文件&#xff0c;導入鏡像 docker load < redis_dump_of_my…

【八股系列】HTTP請求特征是什么?

文章目錄 1. HTTP&#xff08;超文本傳輸協議&#xff09;請求具有以下主要特征&#xff1a;1.1 請求行(Request Line):1.2 請求頭(Request Headers):1.3 請求正文(Request Body):1.4 狀態碼(Status Code):1.5 無狀態性(Statelessness):1.6 緩存支持(Cacheability):1.7 方法多樣…

力扣刷題--2535. 數組元素和與數字和的絕對差【簡單】

題目描述 給你一個正整數數組 nums 。 元素和 是 nums 中的所有元素相加求和。 數字和 是 nums 中每一個元素的每一數位&#xff08;重復數位需多次求和&#xff09;相加求和。 返回 元素和 與 數字和 的絕對差。 注意&#xff1a;兩個整數 x 和 y 的絕對差定義為 |x - y| 。…

JWT下token過期的處理策略

策略1 最簡單最直接的方式 用戶再次輸入他們的登錄憑證&#xff0c;如用戶名和密碼&#xff0c;得到一個新的token 策略2 采用單token的方式&#xff1a; 設置 token 過期時間&#xff1b; 前端發起請求&#xff0c;后端驗證 token 是否過期&#xff08;JWT工具類有一個&a…