一、利用https://start.spring.io/創建Spring程序
創建好之后,下載下來之后,使用idea打開。
二、修改Maven倉庫
Maven默認倉庫,在國外。國內使用,會很慢,在下載依賴時,時不時卡著不動或者中斷。可以將Maven倉庫改為阿里云的倉庫,具體操作如下:
- 修改 maven 根目錄下的 conf 文件夾中的
setting.xml
文件的mirrors
節點;
<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>
三、編寫第一個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";
}
}
我們只需要僅僅一行代碼,就生成一個api
啦,其他的工作Spring Boot
幫我們完成了。現在,就來啟動這個application
,我們來看看啟動的信息:
application輸出log
從輸出的
log
可以看到,Tomcat
啟動了8080
端口,我們訪問下剛剛的api
curl http://localhost:8080/learn
同時,我們引入了
Actuator
依賴,給我們做了其他的一些事,譬如說,提供健康檢查。curl http://localhost:8080/actuator
Actuator提供的服務
四、使用Maven打包
接下來,我們使用Maven
打包
- 使用
mvn clean package
打包;- 切換到
Target
目錄下>cd target
;- 查看目錄下文件
dir
可以看到有兩個jar
包,一個4k
,一個18m
。為什么會相差這么大呢?一個是jar
包原本的大小,18m的jar
包包含了運行所需要的依賴,為可執行性文件,可以直接運行。接下來我們來運行下jar
包。- 運行
jar
包java -jar learn-spring-0.0.1-SNAPSHOT.jar
啟動失敗了
原來是8080
端口被占用了,那我們把idea
的啟動停止了,重新執行jar
包,可以看到和前面啟動application
輸出的log一樣,啟動了Tomcat 8080
端口。
jar包輸出log
我們再次訪問下
五、踩過的坑
似乎看起來,超級簡單,一路順暢,然而一把辛酸淚。
- 找不到或無法加載主類
LearnSpringApplication
網上百度說是缺少springboot
啟動插件,然后pom.xml
已有這個配置;
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
有一說jar
包錯誤,解決方案使用Maven
更新依賴,無效。一怒之下,將項目刪除,重新從https://start.spring.io/創建項目。
org.junit
不存在。這次運行mvm package
時出現org.junit
不存在,繼續百度,網上方案皆是說由于scope
造成,需要去除<scope>test</scope>
這個配置。
<scope>test</scope>
表示依賴的作用域,只能在src
的test
這個目錄下起作用,在其他目錄不起作用。
我的項目文件結構為如下圖項目結構
標注<scope>test</scope>
應該是正確的,然而,我也沒有其他辦法,只能試一試,然而,錯誤依舊。淚奔。
接著,刪除倉庫下下載的所有依賴,運行mvn clean package
,運行項目,錯誤依舊。再次把項目刪除,重新從https://start.spring.io/創建項目,然而,這次的錯誤再次發生改變。
pom.xml
中spring-boot-maven-plugin
插件報紅,Maven
中Dependencies
也報紅。
百度說配置下setting.xml
阿里鏡像,然而我配置的是阿里鏡像啊。重新查看Maven
菜鳥教程,不僅需要設置setting.xml
,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>
加上,運行mvn clean package
,還是報紅。
再次使用終極大法,刪除倉儲,重新建。
這次是先配置好pom.xml
,添加repositories
節點,運行mvn clean package
,沒有報紅,有希望,run LearnSpringApplication
終于成功了。
血淚之經驗: 倉庫一定要配置好