Java中命令行参数--与-D的区别
作者:ThinkStu
本文主要介绍了Java中命令行参数--与-D的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、java -D
java -Dmy.name=张三这种方式添加的参数是jvm的一些属性。此种方式添加的参数可以通过如下方式获取:
System.getProperties("my.name")
二、java –
java --my.address=北京东城区这种方式添加的参数是操作系统的环境变量。可以通过如下方式获取
System.getEnv("my.address");
我们要想了解这两者之间的差异,首先来看一个案例:
# 以应用参数的方式 java -jar my.jar --server.port=7788 # 或以 JDK 参数的方式 java -Dserver.port=7788 -jar my.jar
这两个命令都可以用来设置Spring Boot应用程序的端口号为7788,其中:
- 第一个命令使用 --server.port 选项来设置应用程序的端口号
- 第二个命令使用 -Dserver.port 选项来设置系统属性
这两种方式都可以实现相同的目标,但差别如下:
- 使用 --server.port 选项可以直接将端口号作为应用程序的选项传递,而使用 -Dserver.port 需要将端口号作为系统属性传递。
- -server.port 选项仅适用于 Spring Boot 应用程序,而 -Dserver.port 选项适用于任何Java应用程序。
- –server.port 选项应该在 java -jar 命令之后使用,而 -Dserver.port 选项应该在 -jar 命令前使用。
在实践中,-D 用于设置系统属性,而 – 用于设置应用程序选项或参数。大多数情况下建议使用 --server.port 选项来设置 Spring Boot 应用程序的端口号,因为它更方便和直观,而且只适用于应用程序本身,避免了可能会影响其他 Java 应用程序的系统属性冲突。
三、在springboot中的应用
springboot项目,启动时,通过-D或者 --添加参数,可以直接覆盖yml配置文件中的同名配置,如果yml中没有,那么相当于添加一个配置。
添加的参数名字为spring.application.name和SPRING_APPLICATION_NAME是一样的
在docker中,docker run -e "server.port"用-e操作指定的参数,将成为容器的环境变量,从而就指定了容器启动的端口号。
到此这篇关于Java中命令行参数--与-D的区别的文章就介绍到这了,更多相关Java 命令行参数--与-D内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!