Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Spring Boot 配置支持哪些文件格式?

查看完整题解

参考回答

直接回答

常用 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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。