Java读取配置文件应避免硬编码,优先用Properties(类路径加载+UTF-8解析+安全获取)、TypeSafe Config(HOCON支持+类型化读取)或Spring Boot(@ConfigurationProperties+Profile隔离),并防范打包、热更新和敏感信息等常见陷阱。

Java中读取配置文件的核心在于选择合适的配置格式、加载方式和管理策略。不推荐硬编码或手动解析,应借助标准API或成熟工具实现类型安全、热更新和环境隔离。
使用Properties读取传统配置文件
Properties是JDK内置方案,适合简单键值对(如application.properties):
- 用
ClassLoader.getResourceAsStream()加载类路径下的配置,避免绝对路径依赖 - 调用
Properties.load()解析,支持中文需指定UTF-8字符集(Java 9+默认支持) - 通过
getProperty(key, defaultValue)安全获取值,避免NullPointerException
用TypeSafe Config处理分层配置
对于复杂结构(如嵌套对象、列表、多环境),推荐Lightbend Config(即com.typesafe:config):
- 支持
.conf(HOCON)、.json、.properties多种格式,语法更灵活(可注释、引用、合并) - 用
ConfigFactory.load()自动按优先级加载application.conf、reference.conf等 - 通过
config.getConfig("db")或config.getStringList("features")类型化读取,减少字符串硬编码
结合Spring Boot实现自动配置与Profile切换
在Spring生态中,@ConfigurationProperties + @Profile是主流实践:
立即学习“Java免费学习笔记(深入)”;
- 定义POJO类并标注
@ConfigurationProperties(prefix = "app"),字段名自动映射配置项 - 启用
@EnableConfigurationProperties或通过@SpringBootApplication自动注册 - 用
application-dev.yml、application-prod.yml配合spring.profiles.active=dev实现环境隔离
避免常见陷阱
配置管理易出错的几个关键点:










