Spring Boot 配置支持哪些文件格式?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
常用 properties 与 YAML,YAML 可用 .yaml 或 .yml 后缀。两者都能表达应用属性,区别主要在书写结构,不是 YAML 天然更快或更安全。项目应选清楚一致的入口;同一位置混放相同名称的不同格式时,还要了解优先级,避免以为两份值会按肉眼顺序合并。
讲清原理
properties 用点分层的键表达结构,YAML 用缩进表达对象和列表。YAML 对缩进、标量类型和多文档分隔有自己的语法,密码等特殊文本要正确引用。Boot 会将它们转为可供 Environment 与绑定器读取的属性。
普通 PropertySource 默认不能直接按 YAML 配置数据规则加载文件;Boot 的 ConfigData 入口与该注解不是同一机制。同位置同时存在 properties 与 YAML 时,properties 优先。
例子与易错点
若只改了 application.yml 却没有效果,要检查是否还有同位置 properties 或更高优先属性源。配置中的值应以应用最终绑定结果验证,而不是以编辑器里某个文件看起来正确为准。
以下为 Java 21 类成员示例,放入同一外部类中使用,依赖 Boot4.1.2 / Framework7.0.10。额外依赖SnakeYAML2.6;只读取内存配置,不启动监听端口。
static Object yamlPort() throws java.io.IOException {
String yaml = "server:\n port: 9091\n";
var resource=new org.springframework.core.io.ByteArrayResource(
yaml.getBytes(java.nio.charset.StandardCharsets.UTF_8));
var sources=new org.springframework.boot.env.YamlPropertySourceLoader().load("sample",resource);
return sources.getFirst().getProperty("server.port");
}
相关题:第 4 题、第 13 题、第 14 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。