java启动命令中-D和--的区别

java启动命令中-D和--的区别

在 SpringBoot 项目中,启动时,通过 -D 或 -- 添加参数,都可以直接覆盖 yml 或 properties 配置文件中的同名配置,如果不存在则相当于添加了一个配置。

1.java -D 添加参数

注意: -D 要放到 -jar 前面,否则参数无效。

shell 复制代码
java -Dserver.port=1234 -jar test.jar

1.1支持的获取方式

java 复制代码
System.getPorperties("server.port");

2.java ---- 添加参数

这种方式添加的参数是操作系统的 环境变量

注意: -- 要放到 jar 包后面,否则报错。

复制代码
java -jar test.jar --server.port=1234

2.1支持的获取方式

java 复制代码
System.getEnv("server.port");

3. -DXX VS --XXX 的优先级

结论:--xx 比 -Dxx`的优先级高

application.yml

yaml 复制代码
server:
  port: 18080

使用-DXX 启动

shell 复制代码
java -Dserver.port=18081 -jar app.jar

Tomcat started on port(s): 18081 (http) with context path ''

使用--XX 启动

shell 复制代码
java -jar app.jar --server.port=18082

Tomcat started on port(s): 18082 (http) with context path ''

同时使用-DXX Vs --XX 启动

shell 复制代码
java -Dserver.port=18081 -jar app.jar --server.port=18082

Tomcat started on port(s): 18082 (http) with context path ''

结论:--xx 比 -Dxx`的优先级高

优先级如下:

--长选项参数>-D系统参数>系统全局变量

相关推荐
资深技术分享员4 小时前
遗留系统——把“改不动的老系统“接过来
java·服务器·数据库
新鲜势力呀4 小时前
PHP 实战:第三方接口经常超时怎么办?从API调用优化到服务稳定性完整方案
开发语言·php
江湖有缘4 小时前
Docker实战 | 使用Docker部署Bibliotheca阅读习惯管理工具
java·docker·容器
艾莉丝努力练剑4 小时前
【AI大模型接入SDK】ChatSDK:CMake构建静态库完整实现
java·开发语言·网络·c++·人工智能·学习·sdk
百度一下吧4 小时前
umi后台管理项目实战:从工程搭建到生产构建
java·前端·javascript
haerapi4 小时前
仓库拣货路线不只靠最短边:S 形启发式的反例记录
android·开发语言·javascript
Joe_Wang54 小时前
【从0到1学习JVM · 14】堆内存各区域分工与Xms和Xmx设为一样的真相
java·jvm·学习·垃圾回收
时间的拾荒人4 小时前
Qt 显示类控件详解:从 QLabel 到 QCalendarWidget 的实战指南
开发语言·qt·面试
.道阻且长.4 小时前
C++11 :右值引用的作用,引用折叠和完美转发
java·开发语言·c++