有的时候,jar包运行的参数需要通过命令行的方式传入,有三种方式实现。
一、Springboot之@Value
Springboot的参数可以通过@Value获取。如下:
@Value("${value}")
private String value;
注意:如果以为写了这句代码就可以,那是大错特错。这样写项目都启动不起来的。Springboot启动的时候会从配置文件中获取相关配置,但是找不到key为value的参数。所以我们需要在application.properties配置一个假的参数,这个参数在命令行输入参数以后会被覆盖。
命令行启动:
java -jar web1.jar --value=test
二、System.getProperty("")
在main()内可以通过System.getProperty("")获取命令行参数。
System.out.println("main()获取到的参数是:"+System.getProperty("a1")+", "+System.getProperty("b1"));
启动jar包,输入参数:
java -Da1=liudehua -Db1=zhangxueyou -jar web2.jar
或者
java -jar -Da1=liudehua -Db1=zhangxueyou web2.jar
三、args[i]
在main()内可以通过args[0]获取命令行参数。
System.out.println("main()获取到的参数是:"+args[0]+", "+args[1]);
启动jar包,输入参数:
jar -jar web3.jar aaa bbb
四、其他
@Value、System.getProperty("")和args[i]可以嵌套使用。
java -jar -Da1=a1 -Db1=b1 web4.jar aa bb cc --value=value