天天看點

Spring Boot學習(一)——Spring Boot介紹

Spring Boot是由Pivotal團隊提供的全新架構,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該架構使用了特定的方式來進行配置,進而使開發人員不再需要定義樣闆化的配置。

SpringBoot基于Spring4.0設計,不僅繼承了Spring架構原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過內建大量的架構使得依賴包的版本沖突,以及引用的不穩定性等問題得到了很好的解決。

從上面兩段介紹,對Spring Boot應該有一個初步的認識了:

源自于Spring4.0架構

簡化了Spring應用開發

內建了大量的架構

這就是我們對Spring Boot的初步認識,我們在通過與Spring架構的對比,來弄清楚Spring架構已經很優秀了,為什麼還需要Spring Boot?

我們學習完JavaSE之後我們就步入了學習JavaEE的過程,我們首先學的就是JavaWeb(Tomcat和Servlet),後面就開始學習Spring,我相信在學習Spring的時候,大家看的第一張圖應該就是那張将Spring所有主要子產品羅列的圖了。而Spring架構其實包含了很多的功能子產品,并且我們可以根據項目需求使用其中某些子產品。

拿Spring MVC架構舉例,在我們使用Spring MVC架構進行開發時我們會發現比導入jar包更多的是建構Spring MVC項目時我們需要配置的檔案——application.xml,springmvc-config.xml,log4j.properties,db.properties...,這一大堆的配置檔案還是項目不是很大的情況下,如果項目夠大,為了規範代碼,配置檔案肯定更多更繁雜,最關鍵的是,其中大部分代碼在多個web項目中配置内容大多相同,不同的隻是參數,即使是是用了Spring提供的Java注解,配置檔案寫起來也還是麻煩,這個時候要是可以幫我們自動寫配置檔案就好了,我們隻需要表明關鍵的配置參數,一個web項目就生成了,這樣豈不是不用浪費時間在寫配置檔案和書寫依賴關系上了?是以Spring Boot出現了。

Spring Boot基本上是Spring架構的擴充,它消除了設定Spring應用程式所需的XML配置,為更快,更高效的開發生态系統鋪平了道路。有點類似于maven,maven內建了全部jar,而Spring Boot內建了絕大部分架構。

當然不是說Spring Boot不需要配置,Spring Boot需要的配置檔案類似于Maven的POM,maven就POM一個配置檔案,而Spring Boot也就一個配置檔案足以,并且配置規則不難,大部配置設定置已經預設好了。關鍵是Spring Boot還幫助我們進行了依賴之間的管理和依賴的版本控制。降低了依賴之間的沖突。

以下是Spring Boot中的一些特點:

建立獨立的spring應用(Spring不再是配角)。

嵌入Tomcat, Jetty Undertow 而且不需要部署他們。

提供的“starters” poms來簡化Maven配置(一站式管理依賴)

盡可能自動配置spring應用。

提供生産名額,健壯檢查和外部化配置

絕對沒有代碼生成和XML配置要求

相信介紹之後兩者差別很明顯了:

項目搭建和開發過程Spring Boot要優于大部分Spring應用開發,并且簡化了Spring應用。并不需要配置大量的配置檔案,也不需要繁雜的開發步驟,Spring Boot繼承了Spring的優點并在其擴充了自己的特點(就是包含大量架構)。

解決了項目中依賴之間的不穩定性,依賴沖突的問題。Spring Boot幫我們一站式管理了依賴,而Spring要在maven中顯示聲明大部分依賴。

Spring Boot内部嵌入了服務端,而且不需要部署,Spring 需要我們手動配置和部署(即使用了idea)

當然兩者差別肯定是不隻上訴三點的,這隻是兩者最直覺,初學最開始感受到的差別。

使用Spring Boot搭建一個簡單的Spring MVC 項目:

我們先用maven建立一個普通的java項目,項目結構如圖:

Spring Boot學習(一)——Spring Boot介紹

至于為什麼這個普通的Java項目是web項目,學到後面就詳細了解了,我們先用Spring Boot跑起來。

下一步就是使用maven導入Spring Boot的依賴,這裡我們這裡就采用繼承的方式。

pom.xml:

看我們項目的maven的依賴

Spring Boot學習(一)——Spring Boot介紹

展示的有7個主體依賴(并不是所有依賴),其中有Spring boot、json、tomcat、Spring web、Spring webmvc、validator(參數校驗)。

我們的maven中隻顯示依賴了<code>spring-boot-starter-web</code>,這個玩意稱為Spring web的啟動器,Spring Boot中內建了Spring web架構,是以Spring Boot會自動将Spring Web架構以及所需的依賴都幫我們導入,這就展現了Spring Boot對依賴的統一管理特點。

接下來我們開始編寫邏輯代碼,在com.lyl.controller下建立MyController.java:

controller層寫好了,接下來是不是應該将項目部署到我們本地Tomcat中呢?按理來說我們是部署不了的,因為這個時候項目中并沒有webapp檔案夾,也沒有WEB-INF,那我們如何運作呢?

前面說我們導入的依賴中有Tomcat的依賴,也就是說Spring Boot本身就為我們這個項目内嵌了Tomcat,我們可以直接在Spring Boot上運作我們的web項目。

但是我們不知道從哪裡開始運作,Spring Boot為我們提供了應用入口,其實就是一個普通的Java類,但是Spring Boot官方建議我們将入口類放在根目錄下。

Spring Boot學習(一)——Spring Boot介紹

MyApplication.java:

運作main得出結果:

Spring Boot學習(一)——Spring Boot介紹

從中我們可以看到Tomcat開放的端口号,以及web項目的根url

浏覽器輸入:localhost:8080/show

Spring Boot學習(一)——Spring Boot介紹

成功接收到伺服器傳回的資訊!代表我們使用Spring Boot搭建web項目已經成功,我們使用maven将我們項目打包,在target中發現war包沒有了,取而代之的竟然是jar包!為什麼會這樣?jar包可以被java的編譯器識别,而war包是給tomcat的,也就是說,Spring Boot幫我們内置了tomcat(需要依賴),是以我們就省去了部署項目這一步驟,tomcat的相關配置也隻要在Spring Boot配置檔案中配置就好。

到此我們對Spring Boot應該有了一個初步的了解。

Spring Boot不是Spring的替代品,Spring Boot依賴Spring架構來管理對象的依賴。Spring Boot也不是精簡版的Spring,Spring Boot為Spring做好了面向各種企業級産品的準備。

我們如果Spring基礎不紮實,學習Spring Boot時遇到一些知識點可能了解困難,效率不高。是以我們首先應該學好Spring架構的基礎。核心依舊是Spring。

在我們以往使用Spring架構,一般是使用Spring中的子產品,web容器啟動時再去進行Spring容器的注冊和初始化,而Spring Boot是以Spring啟動後去加載web容器,是以叫建立獨立的Spring應用。