跳到主要内容

az-yml

自动收集自 crates/config/az-yml/README.md

YAML 配置文件的加载、路径查询与值提取工具库,面向 Spring Boot 风格配置约定。

功能

  • YAML 文件加载load_yaml / load_yaml_value 将 YAML 文件反序列化为任意类型或原始 YamlDoc
  • 路径查询YamlPath 支持 spring.datasource.urlitems[0].name 等点号+下标路径语法
  • 环境变量替换 — 字符串值中的 ${VAR:default} 占位符自动替换为环境变量
  • Spring Boot 配置解析SpringYaml 模拟 application.ymlapplication-{profile}.yml 的 profile 激活机制
  • 数据库配置提取DatabaseConfigReader 自动扫描 Spring YAML 中的 JDBC / R2DBC 数据源 URL、用户名与密码
  • 密码脱敏DatabaseConfigDebug 输出自动将 jdbc_password 替换为 ***REDACTED***
  • 便捷宏yaml_path! 编译期路径解析、yaml_get! 路径查询快捷方式

安装

Cargo.toml 中添加:

[dependencies]
az-yml = { path = "../az-yml" } # workspace 内部引用
# 或发布后:
# az-yml = "0.1" # crates.io 引用

用法

use az_yml::{load_yaml_value, SpringYaml, DatabaseConfigReader, YamlDoc};
use az_yml::yaml_path;

// 加载 YAML 文件
let doc = load_yaml_value("application.yml")?;

// 路径查询
let url = doc.get_string("spring.datasource.url")?;
let port = doc.get("server.port")?;

// 使用宏进行编译期路径解析
let path = yaml_path!("spring.datasource.url");
let value = az_yml::get_yaml_path_value(&doc, &path);

// Spring Boot 风格配置加载(自动处理 profile)
let spring = SpringYaml::from_dir("src/main/resources");
let active_config = spring.load_active()?;

// 提取数据库配置
let db_config = DatabaseConfigReader::read("src/main/resources", None)?;
if let Some(config) = db_config {
println!("JDBC URL: {}", config.jdbc_url);
}

依赖的 crates

  • serde — 序列化/反序列化框架
  • serde_yaml — YAML 解析
  • thiserror — 错误类型派生