java/springboot 命令行傳遞參數


java中的各種命令參數

java中有很多命令參數,這些命令參數有些是控制jvm行為的,有的則是供應用程序使用。我所了解的參數主要有三種,現在說一說這三種類型的參數。

(1)命令行參數。

命令行參數就是類似與c語言的命令行參數,這些參數會傳給main函數,也就是java中 public static void main(String[] args) 的那個String數組。但是需要注意的是,c

語言的main行數中傳入的參數,arv[0]是程序本身的名字,比如program1 option1 option2,那么arv[0]就是program1本身。但是java的命令函參數確實從0開始的,也就是說,java中的第一個命令行參數是的args[0],舉個例子 java program1 option1 option2 運行一個java程序的話,args[0]獲取到的是option1。

(2)系統屬性參數

系統屬性參數也是供應用程序使用的,並且是以key=value這樣的形式提供的,在程序的任何一個地方,都可以通過System.getProperty("key")獲取到對應的value值。在官方文檔中對系統屬性參數的描述是這樣的:

Set a system property value. If  value  is a string that contains spaces, you must enclose the string in double quotes:

java -Dfoo="some string" SomeClass

系統屬性參數傳入的時候需要帶一個橫桿和大寫字母D,比如-Dfuck.abc="1234"這樣的。在你業務代碼中,你就可以使用它了:System.getProperty("fuck.abc"),獲取"1234"。不過系統屬性參數一般都是用來開啟一些官方開關的,比如加入-Djdk.internal.lambda.dumpProxyClasses="/home/xxx",你就可以把java8中lambda表達式的代理類自己碼dump出來。

(3)jvm參數

jvm參數就是和jvm相關的參數了,比如配置gc、配置堆大小、配置classpath等等。

jvm參數分為標准參數、擴展參數和不穩定參數。

標准參數是一定有效,向后兼容的,且所有的jvm都必須要實現的,比如-classpath,這類參數是橫桿直接跟參數名

擴展參數是不保證向后向后兼容,不強值要求所有jvm實現都要支持,不保證后續版本不會取消的,這類參數的形式是-Xname,橫杠和一個大寫的X開頭

不穩定參數就是非常不穩定,可能只是特定版本的,特點是-XXname,橫桿后帶兩個大寫X開頭。

 

如果想查看具體的參數的含義,最好的方法就是看官方文檔,或者直接man java一下,也可以參考這篇文章《Java 命令行運行參數》

 

其實,只要java -h以下,就可以看到這些說明。java命令的語法為:

java [-options] class [args...]
           (to execute a class)

或者

java [-options] -jar jarfile [args...]
           (to execute a jar file)

所以,我前面說的嚴格意義上全都是不對的,java中的命令行參數只有option 和 args兩類。我說的第一類對應args,后面兩類都是屬於option的,那才是jvm的參數。

原文鏈接:https://www.cnblogs.com/JMLiu/p/10037367.html

 

spring boot傳遞參數

spring boot 打成jar包后 通過命令行傳入的參數 3中實現方式

方式一:

java -jar xxx.jar  aaa  bbb cccc

傳了3個參數,分別是aaa,bbb,ccc

通過main方法的參數獲取

 

方式二:

java -jar xxx.jar -Da1=aaa -Db1=bbb -Dc1=ccc

通過  System.getProperty("aaa","1"); 方式獲取。作為環境變量

今天遇到奇怪事情:

java  -Xms10m -Xmx512m  xx.jar -DconfigPath=/root

不生效-D配置,在程序中讀取不到。改成

java  -Xms10m -Xmx512m  -DconfigPath=/root   xx.jar  

就可以

方式三:

java -jar xxx.jar --a1=aaa --b1=bbb

是springboot的寫法,可以通過@Value("${a1}") 獲取


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM