java中的几种常见参数设置

记录 常见的参数的设置获取,以及常用之处

命令行参数

最常见的一种,main方法中获得该参数值

public class MyPramTest{
    public static void main(String[] args) {
        // - 命令行参数
        System.out.println("命令行传递的参数1:" + args[0]);
        System.out.println("命令行传递的参数2:" + args[1]);
    }
}
javac MyPramTest.java
java MyPramTest argxxxx-1  argxxxx-2

控制台输出:

命令行传递的参数1:argxxxx-1
命令行传递的参数2:argxxxx-2

系统属性参数

这种参数一般中间件中用的多,例如 dubbo中,-Ddubbo.application.logger=slf4j
一般的输入形式是 java -Dxxx=cccc -Dmmm=“abc=dd” , dos命令行下 java -D 可以看到具体解释:
在这里插入图片描述
-D是用来在启动一个java程序时设置系统属性值的。如果该值是一个字符串且包含空格或特殊字符,那么需要包在一对双引号中,采用 System.getProperty 获得键值。

public class MyPramTest2 {
    public static void main(String[] args) {
        // - 命令行参数
        System.out.println("系统属性参数1:" + System.getProperty("prop1"));
        System.out.println("系统属性参数2:" + System.getProperty("prop2"));
    }
}
javac MyPramTest2.java
java MyPramTest2 -Dprop1=argxxxx-1  -Dprop2="argx  xxx-2"

当然也可以在spring应用中直接输入系统属性参数 例如:

        System.setProperty("dubbo.application.logger", "slf4j");

控制台输出:

系统属性参数1:argxxxx-1
系统属性参数2:argx  xxx-2


另外补充一点,主要是springBoot 启动时候:

java -jar -Xms2048M xxxxxx.jar --server.port=8088 --spring.profiles.active=test

“-” 和 “- -” (单横杠和双横杠)的区别
单横杠是java 命令行特有用法,表示可选参数
双横杠这里是springboot的特定写法,实际上可以看做是 “–server.port=8088” 作为一个整体参数传入java中的 args[] 命令行参数数组中
在这里插入图片描述
可以参考这篇博客 here

环境变量

这个比较好用,设置系统环境变量,采用System.getenv方法从中获得环境变量值

public class MyPramTest3 {
    public static void main(String[] args) {
        // - 命令行参数
        System.out.println("环境变量参数1:" + System.getenv("env1"));
        System.out.println("环境变量参数2:" + System.getenv("env2"));
    }
}
#假设 Linux 系统中, windows 中采用 set  key=value 方式进行环境变量设置,  echo %key% 方式查看
export env1=myenv1111
export env2=myenv2222
javac MyPramTest3 .java
java MyPramTest3

控制台输出:

环境变量参数1:myenv1111
环境变量参数2:myenv2222


yml文件中的取值

spring-boot yml文件中的取值顺序,设置了本文件中的变量值,且同时指定系统属性参数和环境变量,请问最后端口号是多少?
在这里插入图片描述

server:
  port: ${APP_PORT:8081}

APP_PORT: 8082

springboot yml中变量赋值的优先级是:

  1. 优先从系统属性参数中取值
  2. 然后环境变量取值
  3. 最后从本文件中取
  4. 如果以上都取值不到,则采用默认值 8081,如果默认值都没有设置则 报错

上面的测试 最终程序启动的端口是 8087

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值