标准答案

  1. 代码和配置文件保存非敏感默认值,环境或配置中心覆盖环境差异。
  2. 密钥使用 Secret、密钥管理服务或受控注入,应用启动时校验格式和必要项。
  3. 配置前缀和类型绑定能减少字符串拼写错误,变更要考虑刷新时机和线程安全。
  4. 启动日志只输出非敏感配置摘要,不能打印完整令牌和连接密码。

题目解析

配置系统要能回答最终生效值来自哪里、优先级是什么、何时加载和是否可动态刷新。默认配置、环境覆盖、配置中心、命令行和 Secret 的职责应分开,避免排查时只猜。

密钥应由 Secret 或密钥管理系统注入,日志只输出脱敏摘要。轮换通常需要旧 Key 和新 Key 并行一段时间,不能要求所有实例瞬间同时切换。

业务开关和密钥虽然都叫配置,但权限、审计和刷新风险不同。类型绑定、启动校验和变更审计能减少拼写、空值和错误环境带来的故障。

常见误区

  • 误区:把生产密码提交到 application.yml。改正:使用 Secret/密钥管理服务,并检查镜像、日志和 Git 历史是否泄露。
  • 误区:用环境变量覆盖却不验证实际生效值。改正:启动时做类型和必填校验,并输出不含秘密的来源摘要。
  • 误区:把业务开关和密钥放在同一套无限权限配置里。改正:分离权限、审计、轮换和刷新机制。

作者信息