Java中获取系统属性最直接的方式是调用System.getProperty()方法,它基于JVM启动时读取的系统属性表返回字符串值;-D参数自动注册为系统属性,常用属性包括os.name、java.version、user.dir等,支持默认值重载和批量查看,但属只读快照且与环境变量不同。
Java中获取系统属性最直接的方式是调用 System.getProperty() 方法,它基于JVM启动时读取的系统属性表,返回字符串值;而系统参数(即命令行传入的-D选项)也统一归入该属性体系,无需额外解析。
以下属性在开发和运维中高频使用,可直接通过键名获取:
启动Java应用时通过 -Dkey=value 传入的参数,会自动注册为系统属性。例如:
java -Dapp.env=prod -Dlog.path=/var/log/myapp MyApp代码中即可用:
String env = System.getProperty("app.env");
// 返回 "prod"
String logPath = System.getProperty("log.path"); // 返回 "/var/log/myapp"
注意:若键不存在,getProperty() 默认返回 null,建议配合默认值重载方法避免空指针:
String timeout = System.getProperty("http.timeout", "5000"); // 未设置时返回 "5000"
调试或排查环境问题时,可打印全部系统属性:
Properties props = System.getProperties(); props.list(System.out); // 格式化输出到控制台
或遍历键值对,按需过滤:
props.stringPropertyNames().stream()
.filter(key -> key.startsWith("java.") || key.startsWith("os."))
.forEach(key -> System.out.println(key + " = " + props.getProperty(key)));