一、關於Spring Boot
在開始瞭解Spring Boot之前,我們需要先了解一下Spring,因為Spring Boot的誕生和Spring是息息相關的,Spring Boot是Spring發展到一定程度的一個產物,但並不是Spring的替代品,Spring Boot是為了讓程式設計師更好的使用Spring。說到這裡可能有些人會迷糊,那到底Spring和Spring Boot有著什麼樣的聯絡呢?
1.Spring發展史
在開始之前我們先了解一下Spring,Spring的前身是interface21,這個框架最初是為了解決EJB開發笨重臃腫的問題,為J2EE提供了另一種簡單又實用的解決方案,並在2004年3月釋出了Spring 1.0正式版之後,就引起了Java界廣泛的關注和熱評,從此Spring在Java界勢如破竹迅速走紅,一路成為Java界一顆璀璨奪目的明星,至今無可替代,也一度成為J2EE開發中真正意義上的標準了,而他的創始人Rod Johnson也在之後聲名大噪,名利雙收,現在是一名優秀的天使投資人,走上了人生的巔峰。
2.Spring Boot誕生
那既然Spring已經這麼優秀了,為什麼還有了之後Spring Boot?
因為隨著Spring發展的越來越火,Spring也慢慢從一個小而精的框架變成了,一個覆蓋面廣大而全的框架,另一方面隨著新技術的發展,比如nodejs、golang、Ruby的興起,讓Spring逐漸看著笨重起來,大量繁瑣的XML配置和第三方整合配置,讓Spring使用者痛苦不已,這個時候急需一個解決方案,來解決這些問題。
就在這個節骨眼上Spring Boot應運而生,2013年Spring Boot開始研發,2014年4月Spring Boot 1.0正式釋出,Spring Boot誕生之初就受到業界的廣泛關注,很多個人和企業陸續開始嘗試,隨著Spring Boot 2.0的釋出,又一次把Spring Boot推向了公眾的視野,也有越來越多了的中大型企業把Spring Boot使用到正式的生產環境了。值得一提的是Spring官方也把Spring Boot作為首要的推廣專案,放到了官網的首位。
3.Spring Boot介紹
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化Spring應用初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。Spring Boot其實就是一個整合很多可插拔的元件(框架),內嵌了使用工具(比如內嵌了Tomcat、Jetty等),方便開發人員快速搭建和開發的一個框架。
4.Spring Boot特點
- 搭建專案快,幾秒鐘就可以搭建完成;
- 讓測試變的簡單,內建了JUnit、Spring Boot Test等多種測試框架,方便測試;
- Spring Boot讓配置變的簡單,Spring Boot的核心理念:約定大約配置,約定了某種命名規範,可以不用配置,就可以完成功能開發,比如模型和表名一致就可以不用配置,直接進行CRUD(增刪改查)的操作,只有表名和模型不一致的時候,配置名稱即可;
- 內嵌容器,省去了配置Tomcat的繁瑣;
- 方便監控,使用Spring Boot Actuator元件提供了應用的系統監控,可以檢視應用配置的詳細資訊;
二、開發環境
Spring Boot 2.0.4
JDK 1.8
IDE:IntelliJ IDEA 2018.2
注意:Spring Boot 2.x 要求Java8及以上版本,不再支援Java6、Java7.
三、開發工具
IntelliJ IDEA Vs MyEclipse
開發工具的選擇是每一個人入門人員要經歷和選擇的,如果你是老手可以忽略本節。
曾幾何時Eclipse和MyEclipse統治了Java使用者,而如今,年復一年,毫不客氣的說,十年前我用MyEclipse 6.0到現在的MyEclipse 2017 我沒有感覺有任何的變化,還是一樣的皮膚,一樣的佈局,一樣卡的起飛使用感受,即使按照Google的指引,優化了一堆配置之後,你也會發現收效甚微。
這讓我想起了曾經輝煌一時的諾基亞,到今天為止它依然不知道自己做錯了什麼,但時過境遷當一個事物跟不上時代變化的節奏,它就會被新來更適合的事物所代替。不得不說我曾經也是MyEclipse的忠實熱愛者,並且對一個人來說一旦接受了某種事物,出於習慣的作用,通常改變也是很難的。
然而,到今天,我不得不承認IntelliJ IDEA從外觀到執行速度上要比MyEclipse好太多,尤其是對Spring Boot的支援上,更好天作之合,所以IntelliJ IDEA是最好的選擇。
四、Spring Boot版本號說明
Spring Boot的版本選擇一般是這樣的,如下圖:
那版本號後面的英文代表什麼含義呢?
具體含義,如下文所示:
- SNAPSHOT:快照版,表示開發版本,隨時可能修改;
- M1(Mn):M是milestone的縮寫,也就是里程碑版本;
- RC1(RCn):RC是release candidates的縮寫,也就是釋出預覽版;
- Release:正式版,也可能沒有任何字尾也表示正式版;
五、Spring Boot專案建立
Spring Boot專案建立,有兩種方式:
- 方式一:訪問網站構建專案,下載到本地匯入開發工具
- 方式二:使用IDEA(IntelliJ IDEA的簡稱)工具使用Spring Initializr建立初始化(推薦使用)
說明:根據上面的“開發工具”章節得出,使用IDEA是最合適Spring Boot開發的語言,所以本節的所有內容都是使用IDEA完成的。
方式一:訪問網站建立專案
- 訪問網址:https://start.spring.io/
- 配置專案資訊,點選Generate Project按鈕生成專案,如下圖: 其中,Group表示組織識別符號,對應了Java包目錄的結構;Arifact表示專案識別符號,對應專案名稱,也就是根目錄名稱。
- 解壓資料夾,點選IDEA File => New => Project from Existing Sources… => 選擇你解壓專案資料夾目錄 => 點選Ok => 選擇Import project from external model => 選中Maven => 一路點選Next直到專案匯入成功。
方式二:使用IDEA Spring Initializr建立(推薦使用)
點選File => New => Project => 選擇Spring Initializr,按引導操作即可,如下圖:
最終的專案目錄,如下圖:
目錄說明
如上圖所示,整個專案的目錄劃分還是挺清晰的,其中有幾個重要的檔案需要單獨說一下:
- pom.xml => Maven的構建檔案,裡面有關於組建的引用資訊
- src/main/java => 專案的原始碼類都在此目錄下
- com.hellospringboot.hellospringboot/HelloSpringBootApplication.java => 其中前半部分為包名,後半部分為專案的啟動檔案
- src/main/resources => 專案的資原始檔目錄
- src/main/resources/application.properties => 空的屬性配置檔案
六、專案執行
為了演示方便,我們在HelloSpringBootApplication.java直接新增一個訪問方法index,返回一個Hello資訊,右鍵Run執行專案。
注意:
- 標識類註解,我們在訪問之前,處理新增方法之後,還需要給類HelloSpringBootApplication.java設定@RestController註解,@RestController是@Controller和@ResponseBody的集合,如果只是使用@RestController註解,則Controller中的方法無法返回jsp頁面,或者html,配置的檢視解析器 InternalResourceViewResolver不起作用,返回的內容就是Return 裡的內容,為了便於演示,我們就直接給類標註@RestController註解;
- 標識訪問方法註解,只要標識了方法註解,我們訪問才能對映到相應的方法,如下圖我們對映了訪問地址“sayhi”,使用“sayhi2”是訪問不到的
使用進階
如果我們需要傳遞引數,返回JSON格式的資料,應該這樣操作:重複上一步的操作,給類標識@RestController註解,即可返回JSON格式的資訊,如果有引數直接在方法上新增引數的名稱,方法的引數名稱和url引數名稱必須是一一對應的相同的,不然獲取的引數值為null,如圖所示:
總結:如圖所示,引數的傳遞順序是沒有關係的,不影響取值。
七、熱部署
根據上面的提示,我們已經完成了Spring Boot專案的建立和執行,但是有一個問題就是,每次修改程式碼之後都需要重新啟動除錯,程式碼才能生效,比較麻煩,那有沒有一種簡單的方式呢?
答案是有的,那就是接下來要說的熱部署。
熱部署的配置如下:
第一步: 設定IDEA開啟專案自動編譯
File => Settings => Build,Execut,Deployment => Compiler 勾中右側Build Project automatically
如下圖:
第二步: 開啟專案執行時自動生成
ctrl + shift + a(windows系統),command+shift+alt+/(mac系統)
搜尋命令:registry => 勾選compiler.automake.allow.when.app.running
如下圖:
最終的效果如下圖:
八、總結
- Spring框架從小到大的發展,和新技術的興起讓Spring開發看起來變的臃腫,人們需要一種簡單而高效的方法,於是Spring Boot應運而生;
- 本文介紹了Spring Boot版本號的含義,以及開發工具使用IDEA最合適;
- 本文介紹了Spring Boot專案建立的兩種方式,比較推薦使用IDEA的Spring Initializr建立;
- 本文介紹了Spring Boot目錄的含義,以及專案的啟動和執行,並且介紹了多引數傳遞的使用,以及JSON格式的輸出示例;
- 本文介紹了Spring Boot的熱部署配置流程,方便了Spring Boot的開發和除錯。
撩起來,掃描加入圈子