目錄
1 第一個SpringBoot程序
1.1 創建SpringBoot項目
1.2 選擇SpringBoot版本和必要依賴
1.3 項目目錄結構
1.4 編寫Hello World代碼
1.5 運行程序
1.6 不需要IDEA也能創建SpringBoot程序
1.7 部署程序
1.8 pom.xml依賴問題
1.9 無Maven選項問題
1.10 SpringBoot版本和Java版本不匹配
2 Spring、SpringMVC和SpringBoot的區別和聯系
????????SpringBoot框架是為了簡化Spring程序的開發(是Spring程序開發的腳手架)。在介紹SpringBoot前,先來使用一下SpringBoot來寫第一個hello world程序。
1 第一個SpringBoot程序
1.1 創建SpringBoot項目
????????SpringBoot程序要部署的時候,不再像Servlet要打成War包,而是打成Jar包,這里后面會詳細說明。
????????注意:如果使用IDEA 社區版,需要安裝Spring Boot Help插件,才能創建SpringBoot程序。這里是直接使用專業版,內部集成了SpringBoot的插件。
1.2 選擇SpringBoot版本和必要依賴
????????選擇SpringBoot的版本,2.x版本對應Java 8,3.x版本對應Java 17。
????????注意:選擇版本經常會看到SNAPSHOT,這表示是快照,即不穩定版本。如果選擇了這個版本,SNAPSHOT版本的程序出現問題,可以修改后重新發包。如果選擇了不帶SNAPSHOT的版本,程序出現問題后,不能修改,如果要修改就要發布下一個版本號的程序。
????????同時要選擇Spring Web依賴,這是Spring MVC的依賴,SpringBoot程序是基于Spring MVC的。
1.3 項目目錄結構
????????首次創建SpringBoot項目,需要一定的時間,因為SpringBoot的相關依賴需要從中央倉庫下載到本地倉庫(注意配置Maven國內源加速下載)。
- src/main/java:Java源代碼。
- src/main/resources:靜態資源(包括html、css、js等文件)或SpringBoot的配置文件:application.properties。
- src/test/java:測試代碼。
- target:編譯后的文件路徑。
- pom.xml:Maven配置文件。
- .gitignore:git時要忽略的文件。
1.4 編寫Hello World代碼
@RestControllerpublic class UserController {@RequestMapping("/helloSpringBoot")public String Hello(){return "Hello,SpringBoot";}}
1.5 運行程序
????????在包含@SpringBootApplication注解的文件中點擊啟動的綠色箭頭,即可啟動。
????????觀察啟動日志可以發現,在上圖第4行,說明SpringBoot內置了Tomcat(傳統Tomcat部署Servlet程序webapps目錄下有多個項目,因此訪問路徑需要加上項目名因此SpringBoot項目訪問路徑不需要加上項目名),因此部署SpringBoot項目時我們不再打成War包部署在Tomcat的webapps目錄下。第6行說明了SpringBoot是對Servlet的封裝。倒數第2行說明了Tomcat的端口號是8080(想要切換端口號,在application.properties文件中添加server.port=端口號)。
????????注意:傳統Tomcat部署Servlet程序webapps目錄下有多個項目,因此訪問路徑需要加上項目名。而SpringBoot內置了Tomcat,因此SpringBoot項目訪問路徑不需要加上項目名。如果要同時啟動多個SpringBoot項目,更改每個項目Tomcat不同的端口號即可。
????????如果啟動成功,就能在對應的url上訪問到方法。如果輸出的是中文,也不會亂碼(這也是SpringBoot自動把字符集處理了)。
1.6 不需要IDEA也能創建SpringBoot程序
????????前往https://start.spring.io,打開頁面結構和IDEA的類似,創建好后可以下載到本地。
1.7 部署程序
????????把項目打成jar包后,在命令行直接使用java -jar即可運行程序。Windows和Linux都一樣。
1.8 pom.xml依賴問題
????????pom.xml文件中可能存在有些依賴包一直是紅色(沒有引入到項目中)的問題。解決思路:
????????1.去中央倉庫位于https://repo1.maven.org/maven2/和查詢網站https://mvnrepository.com查看包名是否存在,如果不存在改為正確的包名。
????????2.如果包是存在的,說明包還未下載到項目中,多次點擊Maven的刷新,看看是否解決問題。
????????3.如果多次刷新后無效,就去本地倉庫把對應的jar包刪除(有可能因為網絡問題導致jar包下載的不完整),再重新刷新下載jar包。
????????4.切換網絡,刪除本地倉庫的jar包再次下載。
????????5.隔段時間再下載。
????????多次重復上述步驟,問題總會解決的。
1.9 無Maven選項問題
????????右鍵左側文件目錄中的項目名,選擇Add Framework Support,在打開的界面勾選Maven即可。
1.10 SpringBoot版本和Java版本不匹配
????????SpringBoot的2.x版本對應Java 8,3.x版本對應Java 17。如果在創建目錄的時候沒有注意,就會導致出現“無效目標發行版17”等問題。解決辦法:
????????1.重新創建項目。
????????2.修改項目中所有和Java版本相關的屬性,分別在:pom.xml、settings和Project Structure中。
????????上述地方仔細確認是否Java版本和SpringBoot版本匹配。
2 Spring、SpringMVC和SpringBoot的區別和聯系
????????(1)Spring(Spring Framework)是一個開發應用的框架,具有輕量級、一站式、模塊化等特征,目的是為了簡化企業級應用程序開發。
????????Spring具有:對象和依賴關系的管理、面向切面編程、數據庫事務管理、數據訪問、Web框架支持等功能。它具有高度可開放性,可以無縫支持第三方框架(數據訪問(Hibernate、JPA等)、Web(Struts、JSF等)),并且開發人員無需使用Spring的全部,需要什么功能使用什么功能即可。
????????(2)SpringMVC是Spring的一個子框架,全稱Spring Web MVC。它是基于Spring和MVC思想開發的一個Web框架,也就是說Spring可以開發各種應用程序,但是SpringMVC專精Web程序的開發。
????????其中的MVC思想是Model模型、View視圖、Controller控制器。View視圖可以理解為用戶交互界面,比如Web程序中的瀏覽器頁面。Controller控制器是處理網絡交互的請求和響應。Model模型負責業務邏輯,比如和數據庫的數據交互等等。但是MVC思想與時俱進,逐漸演化為現在的前后端分離的開發思想,前端負責頁面的展示,后端負責業務邏輯。而后端具體可以大概分為:Controller層、Service層和Dao層,其中Controller層就是MVC中的View和Controller的組合,而Service層和Dao層就是Model,這樣做是為了更好的項目結構解耦,形成高內聚、低耦合的項目。
????????拋去MVC思想,SpringMVC可以理解為Spring Web開發的一個大型庫,實現了對Servlet的封裝,提供了很多的包和注解便于Web項目的開發:比如URL地址映射、對請求和響應的處理。
????????(3)SpringBoot是對Spring的封裝,是Spring開發的腳手架,核心思想約定大于配置,目的是為了簡化Spring應用的開發流程,讓企業更關注業務邏輯,無需過多關注xml配置和底層實現,降低開發成本。
????????比如SpringBoot內部集成了Tomcat服務器,無需讓開發人員關系項目部署問題,直接運行jar包即可開啟服務。如果想要開發Web程序,引入SpringMVC框架即可。如果想要項目有和數據庫交互的能力,引入MyBatis框架即可。
????????總結:SpringMVC和SpringBoot都屬于Spring系列框架,SpringMVC簡化了Spring Web開發,SpringBoot簡化了Spring應用開發。
????????注意:Spring Web和Spring應用的關系,Spring Web只是Spring眾多應用的一部分,即我們使用Spring不止能開發Web程序,也可以開發其他應用程序,比如游戲、桌面應用等等。