启动 Jar 时命令行参数 [-D] 和 [–] 的区别
-D 虚拟机参数
虚拟机参数既是在 IDEA 中设置 VM options 参数。以运行jar包为例,写法为:
# 参数写法为:-Dproperty=value java -Dserver.port=1234 -jar app.jar
若以 -D 形式传递参数,要放到 -jar 前面,否则参数无效。
代码中可以通过下列代码获取该参数:
System.getProperty("server.port");
– 命令行参数
虚拟机参数既是在 IDEA 中设置 Program arguments 参数。即使用 main 方法的参数 arg 接受,springboot会对这种参数进行自动解析。
写法为:
java -jar app.jar --server.port=4321
若以 -D 形式传递参数,要放到 -jar 后面,否则会报错。
代码中可以通过下列代码获取该参数:
environment.getProperty("server.port");
总结
- 两种写法都可以在命令行传入参数,实现覆盖
application.properties
中的配置项。- 命令行参数与虚拟机参数同名的,以命令行参数优先。