Java中命令行参数--与-D的区别

 更新时间:2023年06月21日 10:30:17   作者: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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA代码调用ffmpeg程序进行视频转码和推流方式

    JAVA代码调用ffmpeg程序进行视频转码和推流方式

    本文介绍了如何通过Java代码调用FFmpeg进行多媒体视频处理,包括两种方式:使用第三方封装的jar包和使用ProcessBuilder类创建进程,两种方式各有优缺点,选择时需根据具体需求和场景
    2025-02-02
  • 使用ObjectMapper解析json不用一直new了

    使用ObjectMapper解析json不用一直new了

    这篇文章主要为大家介绍了使用ObjectMapper解析json不用一直new了的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 详解Java常用工具类—泛型

    详解Java常用工具类—泛型

    这篇文章主要介绍了Java常用工具类—泛型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 为什么说HashMap线程不安全

    为什么说HashMap线程不安全

    本文主要介绍了为什么说HashMap线程不安全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 两个例子了解java中的回调机制

    两个例子了解java中的回调机制

    这篇文章主要介绍了Java中回调机制的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • 一篇文章带你了解Java Stream流

    一篇文章带你了解Java Stream流

    Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。这篇文章主要介绍了Java8新特性Stream流的相关资料,需要的朋友参考下吧
    2021-08-08
  • 深入理解SpringMVC中央调度器DispatcherServlet

    深入理解SpringMVC中央调度器DispatcherServlet

    这篇文章主要介绍了SpringMVC核心之中央调度器DispatcherServlet的相关知识,包括SpringMVC请求处理过程及SrpingMVC容器和spring IOC容器关系,需要的朋友可以参考下
    2022-05-05
  • MyBatis的mapper.xml文件热加载功能实现方案

    MyBatis的mapper.xml文件热加载功能实现方案

    文章分析了Arthas无法直接热替换MyBatis的mapper.xml文件的限制,并提出了多种变通方法来实现类似效果,这些方法包括结合MyBatis的热加载功能、使用Arthas和类重加载、动态刷新MappedStatement等,文章还建议在不同环境中使用不同的解决方案,需要的朋友可以参考下
    2026-02-02
  • Java Runtime用法实战案例

    Java Runtime用法实战案例

    这篇文章主要介绍了Java Runtime用法,结合实例形式分析了Runtime针对系统内存、处理器信息的获取相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • springboot中的starter及自定义方法详解

    springboot中的starter及自定义方法详解

    这篇文章主要介绍了springboot中的starter及自定义方法详解,Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境(条件)进行自动配置,需要的朋友可以参考下
    2023-11-11

最新评论