一淫僻、利用https://start.spring.io/創(chuàng)建Spring程序
創(chuàng)建好之后,下載下來(lái)之后阔拳,使用idea打開崭孤。
二、修改Maven倉(cāng)庫(kù)
Maven默認(rèn)倉(cāng)庫(kù)糊肠,在國(guó)外辨宠。國(guó)內(nèi)使用,會(huì)很慢货裹,在下載依賴時(shí)嗤形,時(shí)不時(shí)卡著不動(dòng)或者中斷』≡玻可以將Maven倉(cāng)庫(kù)改為阿里云的倉(cāng)庫(kù)赋兵,具體操作如下:
- 修改 maven 根目錄下的 conf 文件夾中的
setting.xml
文件的mirrors
節(jié)點(diǎn);
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
pom.xml
文件添加
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
三、編寫第一個(gè)Api
@SpringBootApplication
@RestController
public class LearnSpringApplication {
public static void main(String[] args) {
SpringApplication.run(LearnSpringApplication.class, args);
}
@RequestMapping("/learn")
public String learn(){
return "learn spring";
}
}
我們只需要僅僅一行代碼搔预,就生成一個(gè)api
啦霹期,其他的工作Spring Boot
幫我們完成了。現(xiàn)在拯田,就來(lái)啟動(dòng)這個(gè)application
历造,我們來(lái)看看啟動(dòng)的信息:
從輸出的
log
可以看到,Tomcat
啟動(dòng)了8080
端口勿锅,我們?cè)L問(wèn)下剛剛的api
curl http://localhost:8080/learn
同時(shí)帕膜,我們引入了
Actuator
依賴,給我們做了其他的一些事溢十,譬如說(shuō)垮刹,提供健康檢查。curl http://localhost:8080/actuator
四、使用Maven打包
接下來(lái),我們使用Maven
打包
- 使用
mvn clean package
打包;- 切換到
Target
目錄下>cd target
;- 查看目錄下文件
dir
可以看到有兩個(gè)jar
包,一個(gè)4k
珊蟀,一個(gè)18m
寺董。為什么會(huì)相差這么大呢覆糟?一個(gè)是jar
包原本的大小,18m的jar
包包含了運(yùn)行所需要的依賴遮咖,為可執(zhí)行性文件滩字,可以直接運(yùn)行。接下來(lái)我們來(lái)運(yùn)行下jar
包御吞。- 運(yùn)行
jar
包java -jar learn-spring-0.0.1-SNAPSHOT.jar
啟動(dòng)失敗了
原來(lái)是8080
端口被占用了麦箍,那我們把idea
的啟動(dòng)停止了,重新執(zhí)行jar
包,可以看到和前面啟動(dòng)application
輸出的log一樣陶珠,啟動(dòng)了Tomcat 8080
端口挟裂。
我們?cè)俅卧L問(wèn)下
五、踩過(guò)的坑
似乎看起來(lái)揍诽,超級(jí)簡(jiǎn)單诀蓉,一路順暢,然而一把辛酸淚暑脆。
- 找不到或無(wú)法加載主類
LearnSpringApplication
網(wǎng)上百度說(shuō)是缺少springboot
啟動(dòng)插件渠啤,然后pom.xml
已有這個(gè)配置;
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
有一說(shuō)jar
包錯(cuò)誤饵筑,解決方案使用Maven
更新依賴埃篓,無(wú)效。一怒之下根资,將項(xiàng)目刪除,重新從https://start.spring.io/創(chuàng)建項(xiàng)目同窘。
org.junit
不存在玄帕。這次運(yùn)行mvm package
時(shí)出現(xiàn)org.junit
不存在,繼續(xù)百度想邦,網(wǎng)上方案皆是說(shuō)由于scope
造成裤纹,需要去除<scope>test</scope>
這個(gè)配置。
<scope>test</scope>
表示依賴的作用域丧没,只能在src
的test
這個(gè)目錄下起作用鹰椒,在其他目錄不起作用。
我的項(xiàng)目文件結(jié)構(gòu)為如下圖
標(biāo)注<scope>test</scope>
應(yīng)該是正確的呕童,然而漆际,我也沒有其他辦法,只能試一試夺饲,然而奸汇,錯(cuò)誤依舊施符。淚奔。
接著擂找,刪除倉(cāng)庫(kù)下下載的所有依賴戳吝,運(yùn)行mvn clean package
,運(yùn)行項(xiàng)目贯涎,錯(cuò)誤依舊听哭。再次把項(xiàng)目刪除,重新從https://start.spring.io/創(chuàng)建項(xiàng)目塘雳,然而欢唾,這次的錯(cuò)誤再次發(fā)生改變。
pom.xml
中spring-boot-maven-plugin
插件報(bào)紅粉捻,Maven
中Dependencies
也報(bào)紅礁遣。
百度說(shuō)配置下setting.xml
阿里鏡像,然而我配置的是阿里鏡像啊肩刃。重新查看Maven
菜鳥教程祟霍,不僅需要設(shè)置setting.xml
,pom.xml
也需要添加下相關(guān)節(jié)點(diǎn):
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
加上,運(yùn)行mvn clean package
盈包,還是報(bào)紅沸呐。
再次使用終極大法,刪除倉(cāng)儲(chǔ)呢燥,重新建崭添。
這次是先配置好pom.xml
,添加repositories
節(jié)點(diǎn)叛氨,運(yùn)行mvn clean package
呼渣,沒有報(bào)紅,有希望寞埠,run LearnSpringApplication
終于成功了屁置。
血淚之經(jīng)驗(yàn): 倉(cāng)庫(kù)一定要配置好