在每一個學(xué)習(xí)Java的同學(xué),都應(yīng)該寫過下面的這一段代碼。
public class Hello{
public static void main(String[] args) {
System.out.println("Hello,World!");
}
}
在Java語言中,規(guī)定了入口函數(shù)是一個main()方法,該方法有一個String[]類型的參數(shù),但是在很多時候,很多人都使用不上這個參數(shù),也不關(guān)心為什么要寫這個參數(shù)。
那么這個字符串?dāng)?shù)組類型的參數(shù)究竟是什么東西呢?
其實很簡單,main()方法中的字符串?dāng)?shù)組類型的參數(shù)就是java命令的參數(shù),使用java命令的方式運行main()方法,會將java命令的參數(shù)入?yún)⒌絁ava main()方法的字符串?dāng)?shù)組參數(shù)中。
我們可以通過以下方式來進行驗證:
- 1、先編寫一個Hello.java文件,文件內(nèi)容如下:
public class Hello{
public static void main(String[] args) {
System.out.println("==============args start============");
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
System.out.println("==============args end============");
}
}
- 2、在Hello.java文件的路徑下打開cmd命令提示符,運行javac Hello.java命令編譯該文件,這將會在對應(yīng)的文件路徑下,得到一個Hello.class字節(jié)碼文件。
- 3、使用java Hello命令運行Hello.class文件,我們將會得到如下的運行結(jié)果:
- 4、我們這次在java命令后面添加一些參數(shù),這些參數(shù)我們可以自己定義。例如:java Hello a b c d ,我們將會得到如下的運行結(jié)果:
正是因為Java main()方法的這個擴展性,使得每一個開發(fā)者,可以通過自己定義一些Java命令的參數(shù),實現(xiàn)一些不同的功能。
其中SpringBoot的啟動類,其實也使用了這個特性,SpringApplication.run()方法有一個重載方法,其中第一個入?yún)⒌氖亲⒔饬薂SpringBootApplication注解的類的字節(jié)碼對象,而第二個參數(shù),即為main()方法的字符串?dāng)?shù)組參數(shù)。
SpringBoot可以通過這個字符串?dāng)?shù)組參數(shù),通過java命令參數(shù)的方式,在不同的環(huán)境下實現(xiàn)不同的應(yīng)用配置。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
推薦好課: