最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中YAML配置文件用法及說明

 更新時間:2026年05月25日 10:13:58   作者:Vintanz  
SpringBoot項目中,YAML配置文件因其簡潔語法和層級結構清晰等成為首選,本文詳細介紹了YAML的基礎語法、數(shù)據(jù)類型映射及實戰(zhàn)技巧,并幫助開發(fā)者更好地管理和配置文件

在 Spring Boot 項目中,配置文件是不可或缺的一部分,用于自定義應用行為、覆蓋默認設置。除了傳統(tǒng)的 properties 文件,Spring Boot 對 YAML(YAML Ain’t Markup Language)格式提供了完美支持。

YAML 以其簡潔的語法、清晰的層級結構,成為許多開發(fā)者的首選配置方式。

一、YAML 是什么?為什么用 YAML?

YAML 是一種數(shù)據(jù)序列化格式,設計目標是易讀易寫,同時兼顧機器解析效率。與傳統(tǒng)的 properties 文件相比,YAML 具有以下優(yōu)勢:

  • 層級結構清晰:通過縮進表示配置之間的父子關系,避免了 properties 中重復的前綴(如 server.portserver.servlet.context-path)。
  • 支持復雜數(shù)據(jù)類型:原生支持對象、列表、Map 等復雜結構,無需額外語法。
  • 語法簡潔:去掉了 properties 中的等號和多余標點,減少冗余代碼。

Spring Boot 會自動加載 resources 目錄下的 application.ymlapplication.yaml 文件,其優(yōu)先級與 application.properties 一致(可通過配置位置調(diào)整優(yōu)先級)。

二、YAML 基礎語法規(guī)則

使用 YAML 時,需遵守以下核心規(guī)則,否則可能導致配置加載失?。?/p>

  1. 大小寫敏感nameName 代表不同的配置項。
  2. 縮進表示層級:使用空格(不允許使用 Tab)縮進,縮進數(shù)量不限,但同級配置必須對齊。
  3. 鍵值對格式:鍵與值之間用冒號加空格分隔(如 key: value),冒號后必須有空格。
  4. 注釋:以 # 開頭的行為注釋,會被忽略。
  5. 字符串無需引號:默認情況下,字符串可以不加引號;若包含特殊字符(如空格、冒號),需用單引號或雙引號包裹。

示例:

# 基本鍵值對
server:
  port: 8080  # 端口配置
  servlet:
    context-path: /demo  # 上下文路徑
# 字符串配置(含特殊字符)
app:
  title: "Spring Boot: YAML 教程"  # 雙引號保留特殊字符
  description: 'Hello: World'      # 單引號也支持

三、YAML 配置常見數(shù)據(jù)類型

YAML 支持多種數(shù)據(jù)類型,從簡單值到復雜結構均可輕松表示,以下是開發(fā)中常用的類型及示例:

1. 簡單數(shù)據(jù)類型

包括字符串、數(shù)字、布爾值等,直接以 key: value 形式定義:

# 簡單數(shù)據(jù)類型示例
user:
  id: 1001          # 數(shù)字
  name: 張三         # 字符串
  isVip: true        # 布爾值
  score: 98.5        # 浮點數(shù)
  joinDate: 2023-10-01  # 日期(字符串形式)

2. 對象類型

用于表示包含多個屬性的實體,支持兩種寫法:

  • 縮進式:通過縮進體現(xiàn)屬性層級。
  • 行內(nèi)式:用 {} 包裹,屬性之間用逗號分隔。

示例:

# 對象配置(縮進式)
user1:
  name: 張三
  age: 20
  address: 北京
# 對象配置(行內(nèi)式)
user2: {name: 李四, age: 22, address: 上海}

3. 集合類型

包括列表(List)和集合(Set),支持兩種寫法:

  • 短橫線式:每個元素前加 - (短橫線+空格)。
  • 行內(nèi)式:用 [] 包裹,元素之間用逗號分隔。

示例:

# 列表配置(短橫線式)
city1:
  - 北京
  - 上海
  - 廣州
# 列表配置(行內(nèi)式)
city2: [北京, 上海, 廣州]
# 集合中的元素是對象
students:
  - id: 1
    name: 張三
    age: 20
  - id: 2
    name: 李四
    age: 22

?? 注意:短橫線與元素值之間必須有空格,否則會解析錯誤 。

四、Spring Boot 中 YAML 的核心應用

1. 覆蓋默認配置

Spring Boot 有許多默認配置(如 Tomcat 端口、日志級別等),可通過 YAML 覆蓋:

# 覆蓋服務器配置
server:
  port: 8888  # 端口改為 8888(默認 8080)
  tomcat:
    max-threads: 200  # Tomcat 最大線程數(shù)
# 日志配置
logging:
  level:
    root: info  # 根日志級別
    com.example: debug  # 自定義包日志級別

2. 自定義配置與讀取

除了框架默認配置,還可在 YAML 中定義自定義配置,再通過代碼讀取使用。

方式 1:@Value 注解(適合簡單配置)

@Value 可直接映射 YAML 中的簡單值(如字符串、數(shù)字),語法為 ${key}

# 自定義配置
app:
  name: 我的應用
  version: 1.0.0
  authors:
    - 張三
    - 李四

代碼中讀取:

@Controller
public class YamlController {
    @Value("${app.name}")
    private String appName;  // 映射 "我的應用"

    @Value("${app.version}")
    private String appVersion;  // 映射 "1.0.0"

    @Value("${app.authors[0]}")  // 讀取列表第一個元素
    private String firstAuthor;  // 映射 "張三"

    // 業(yè)務方法...
}

?? 注意:@Value 僅支持簡單類型,無法直接映射對象或復雜集合 。

方式 2:@ConfigurationProperties(適合對象/復雜配置)

當配置項較多或為對象結構時,推薦使用 @ConfigurationProperties 將配置批量映射到實體類:

  1. 定義實體類并綁定配置前綴:
@Component
@ConfigurationProperties(prefix = "user")  // 綁定前綴 "user"
public class UserConfig {
    private Integer id;
    private String name;
    private List<String> address;  // 映射列表

    // getter + setter(必須存在,否則無法綁定)
}
  1. YAML 配置:
# 用戶配置(與實體類對應)
user:
  id: 1001
  name: 張三
  address:
    - 北京
    - 上海
  1. 使用時直接注入實體類:
@Controller
public class UserController {
    @Autowired
    private UserConfig userConfig;  // 自動注入配置

    @GetMapping("/user")
    @ResponseBody
    public String getUser() {
        return "ID: " + userConfig.getId() + ", 姓名: " + userConfig.getName();
    }
}

3. 占位符與動態(tài)配置

YAML 支持通過 ${} 引用其他配置項或使用框架提供的工具類生成動態(tài)值:

引用其他配置

server:
  port: 8080
app:
  url: http://localhost:${server.port}/demo  # 引用 server.port 的值

生成隨機值

Spring Boot 提供 random 工具類,可生成隨機數(shù)、UUID 等:

# 隨機值示例
config:
  randomInt: ${random.int}  # 隨機整數(shù)
  randomIntRange: ${random.int(100, 200)}  # 100-200 之間的隨機整數(shù)
  randomUUID: ${random.uuid}  # 隨機 UUID
  randomLong: ${random.long}  # 隨機長整數(shù)

五、YAML 配置文件的優(yōu)先級

Spring Boot 會從多個位置加載 application.yml,優(yōu)先級從高到低如下(高優(yōu)先級配置會覆蓋低優(yōu)先級):

  1. 項目根目錄下的 /config 子目錄(./config/application.yml
  2. 項目根目錄(./application.yml
  3. resources 目錄下的 /config 子目錄(classpath:/config/application.yml
  4. resources 目錄(classpath:/application.yml

可根據(jù)需求將配置文件放在不同位置,例如:

  • 開發(fā)環(huán)境配置放在 resources/config 中,方便修改。
  • 生產(chǎn)環(huán)境配置放在項目根目錄的 config 中,避免打包到 Jar 包內(nèi)。

六、常見問題與解決方案

配置不生效?

  • 檢查語法:是否漏寫冒號后的空格、縮進是否正確。
  • 檢查路徑:配置文件是否在 resources 目錄或指定的優(yōu)先級目錄中。
  • 檢查注解:使用 @ConfigurationProperties 時,確保實體類有 getter/setter 方法。

中文亂碼?

  • 確保 YAML 文件編碼為 UTF-8(IDEA 中可在 File -> Settings -> Editor -> File Encodings 中設置)。

如何區(qū)分多環(huán)境?

  • 創(chuàng)建多環(huán)境配置文件,如 application-dev.yml(開發(fā))、application-prod.yml(生產(chǎn)),通過 spring.profiles.active=dev 指定激活環(huán)境。

總結

YAML 以其簡潔的語法和強大的表達能力,成為 Spring Boot 配置的優(yōu)選格式。

掌握 YAML 的基礎語法、數(shù)據(jù)類型映射及實戰(zhàn)技巧,能顯著提升配置文件的可讀性和維護性。

在實際開發(fā)中,建議結合 @ConfigurationProperties 管理復雜配置,并合理利用多環(huán)境配置和優(yōu)先級規(guī)則,讓配置更加靈活高效。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

镇康县| 横峰县| 昌乐县| 江源县| 马山县| 西吉县| 内丘县| 乐都县| 习水县| 富裕县| 黄浦区| 义乌市| 固阳县| 武川县| 成安县| 开远市| 武城县| 汾阳市| 珲春市| 石柱| 德钦县| 河西区| 太白县| 澄迈县| 台安县| 沧州市| 乌拉特前旗| 嘉定区| 竹溪县| 吕梁市| 安宁市| 五河县| 通海县| 新巴尔虎右旗| 丹巴县| 吕梁市| 绥棱县| 南华县| 玉龙| 南宁市| 涞水县|