SpringBoot系列---【三种启动传参方式的区别】

少年攻城狮 / 2023-08-08 / 原文

三种启动传参方式的区别

1.三种方式分别是什么?

idea中经常看到下面三种启动传参方式

  • 优先级

Program arguments > VM options > Environment variable > 系统默认值

2.参数说明

2.1、VM options

VM options其实就是我们在程序中需要的运行时环境变量,它需要以-D或-X或-XX开头,每个参数使用空格分隔使用最多的就是-Dkey=value设定系统属性值,比如-Dspring.profiles.active=dev3

  • 添加参数方法
// -D开头 + 参数名 = 参数值
// = 两侧没有空格
// 不同参数之间空格分隔
// 如下所示我们增加两个参数 Env 和 Name
-DEnv=prod -DName=admin
  • 获取参数方法
// System.getProperty("参数名")
System.getProperty("Env");
System.getProperty("Name");

2.2、Program arguments

Program arguments为我们传入main方法的字符串数组args[],它通常以--开头,如--spring.profiles.active=dev3,等价于-Dspring.profiles.active=dev3如果同时存在,以Program arguments配置优先。

  • 添加参数方法
// Program arguments有两种类型,一种是以--key=value的形式;一种是直接写value
// 参数之间空格分隔
--mode=debug test

  • 获取参数方法

2.3、Environment variables

Environment variables没有前缀,优先级低于VM options,即如果VM options有一个变量和Environment variable中的变量的key相同,则以VM options中为准。

  • 添加方法
// 参数名=参数值
// 多个参数之间使用分号分隔(注意这里不是用空格分隔)
password=123456;name=admin
  • 获取方法
// System.getenv("参数名")
System.getenv("password");
System.getenv("name");