我們都知道,SpringBoot框架最吸引人的地方之一就是他針對各種框架組件集成都提供了缺省的配置,“零配置”集成和開發(fā)是它的終極目標(biāo)。理論上你不做任何特殊配置,都可以啟動項目。
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括資中網(wǎng)站建設(shè)、資中網(wǎng)站制作、資中網(wǎng)頁制作以及資中網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,資中網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到資中省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
如果你用SpringBoot用于web項目開發(fā),那么他就已經(jīng)內(nèi)嵌了web容器,無需你單獨部署到tomcat或者jetty等容器中,打包成jar包即可運行,省去了反鎖的打包部署流程。默認(rèn)情況下,由SpringBoot啟動的web項目,默認(rèn)端口是8080,這也是tomcat或jetty的默認(rèn)端口。那么問題來了,我要改端口怎么辦,這是必然會遇到的問題。
還記得運行SpringBoot項目時,需要編寫的main方法嗎,當(dāng)時的代碼是這樣的:
@SpringBootApplication
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class, args);
}
}
注意,這是一個main方法,動態(tài)傳入啟動參數(shù),這跟普通運行一個java程序沒什么區(qū)別。args就是他的啟動參數(shù),它是一個數(shù)組,可以帶一個或多個參數(shù)。
那這個參數(shù)是用來做什么的?既然springboot默認(rèn)做好了大部分的配置,那么要修改這些配置,就是通過傳入main方法執(zhí)行的參數(shù)將覆蓋框架自動為你做好的配置。
比如,你可以用如下的類似代碼,來修改你啟動項目的端口:
java -jar xxx.jar --server.port=8888
再比如,你可以如下的類似代碼,來修改你啟動的項目在控制臺輸出的logo,
java -jar xxx.jar --spring.banner.location=classpath:banner.txt
最終的效果也就是把啟動時,你經(jīng)常看到的這個
替換成了這個:
諸如此類,還可以定制其他很多默認(rèn)設(shè)置,當(dāng)然有些需要在pom文件中添加相應(yīng)的模塊依賴,才能使用相應(yīng)的功能。比如你用到了redis,那么你需要添加
spring-boot-starter-data-redis來把redis的默認(rèn)設(shè)置先加載進(jìn)來,在這基礎(chǔ)上,你就可以編寫定制參數(shù),比如:
java -jar xxx.jar --spring.redis.port=6379
注意,命令的格式是:
#參數(shù)需要跟在jar包名稱之后以--開頭
java -jar xxx.jar --參數(shù)名=參數(shù)值
你也可以在運行時,同時添加多個定制參數(shù)(以空格隔開),比如把上述幾個例子合并起來就是:
java -jar xxx.jar --server.port=8888 --spring.banner.location=classpath:banner.txt --spring.redis.port=6379
理論上,能支持定制的參數(shù),都可以添加。
附帶說一句,用IDEA或者M(jìn)yeclipse這樣的IDE幫你運行項目的時候,其原理也是如此。
那么,現(xiàn)在就有兩個問題出現(xiàn)了。
1、我怎么知道springboot支持哪些定制參數(shù)?
2、這么多參數(shù),都寫到運行命令上嗎?那樣豈不是會顯得很臃腫,貌似一點都不優(yōu)雅?
這兩個問題,留到下次再談。