一.SpringBoot是什么?
在介紹 SpringBoot 之前我們首先來簡單介紹一下 Spring。Spring 是誕生于2002年的 Java 開發框架,可以說已經成為 Java 開發的事實標準。所謂事實標準就是雖然 Java 官方沒有說它就是開發標準,但是在當前 Java 開發的眾多項目中,當我們談到產品級的 Java 項目的時候,大多都是基于 Spring 或者應用了 Spring 特性的。
Spring 基于 IOC 和 AOP 兩個特性對 Java 開發本身進行了大大的簡化。但是一個大型的項目需要集成很多其他組件,比如一個 WEB 項目,至少要集成 MVC 框架、Tomcat 這種 WEB 容器、日志框架、ORM框架,連接數據庫要選擇連接池吧……使用 Spring 的話每集成一個組件都要去先寫它的配置文件,比較繁瑣且容易出錯。
然后就有了SpringBoot。
Spring Boot 是由 Pivotal 團隊提供的全新框架,2014 年 4 月發布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0發布。它是對spring的進一步封裝,其設計目的是用來簡化 Spring 應用的初始搭建以及開發過程。怎么簡化的呢?就是通過封裝、抽象、提供默認配置等方式讓我們更容易使用。
SpringBoot 基于 Spring 開發。SpringBoot 本身并不提供 Spring 框架的核心特性以及擴展功能,也就是說,它并不是用來替代 Spring 的解決方案,而是和 Spring 框架緊密結合用于提升 Spring 開發者體驗的工具。
關于 SpringBoot 有一句很出名的話就是約定大于配置。采用 Spring Boot 可以大大的簡化開發模式,它集成了大量常用的第三方庫配置,所有你想集成的常用框架,它都有對應的組件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 應用中這些第三方庫幾乎可以零配置地開箱即用,大部分的 SpringBoot 應用都只需要非常少量的配置代碼,開發者能夠更加專注于業務邏輯。
二.SpringBoot為什么出現?
為什么會產生 SpringBoot 呢???剛才說 SpringBoot 簡化了基于 Spring 開發,這只是最直觀的一方面,事實上 SpringBoot 的誕生有它所處的大時代背景這個原因在里面的,那就是微服務,這也是談 SpringBoot 必談微服務的原因。??2014年一個叫 Martin Fowler (同時也是經典著作《重構:改善既有代碼的設計》一書的作者)發表了一篇關于微服務的博客,比較形象生動地介紹了什么是微服務,然后微服務才慢慢被人所熟知。他說微服務其實是一種架構風格,我們在開發一個應用的時候這個應用應該是由一組小型服務組成,每個小型服務都運行在自己的進程內;小服務之間通過HTTP的方式進行互聯互通。和微服務相對應的就是我們之前的,單體應用,就是大名鼎鼎的 all in one 的風格。這種風格把所有的東西都寫在一個應用里面,比如我們熟悉的OA,CRM,ERP系統,所有的頁面,所有的代碼都放在一起,打成打成一個war包,然后把war包放在Tomcat容器中運行。
Spring Boot本身并不提供Spring框架的核心特性以及擴展功能,只是用于快速、敏捷地開發新一代基于Spring 框架的應用程序。同時它集成了大量常用的第三方庫配置(如 Redis、MongoDB、JP A、RabbitMQ、Quartz等),Spring Boot 應用中這些第三方庫幾乎可以零配置進行開箱即用,大部分的Spring Boot應用都只需要非常少量的配置代碼,開發者能夠更加專注于業務邏輯。
這種傳統web開發的架構模式當然也有它的優勢,比如它測試部署比較簡單,因為不涉及到多個服務的互聯互調,只需要把一個包上傳到服務器就行了,可以說是一人吃飽全家不餓。同樣也不會給運維帶來麻煩,方便水平擴展,只需要又把相同的應用復制多份放在不同的服務器中就達到了擴展的目的。
單體應用的的缺點也顯而易見,容易牽一發而動全身,比如要更改一個小小的功能,就可能需要重新部署整個應用。當然,更大的挑戰就是日益增長的用戶需求。
三:為什么學習 Spring Boot
使用 Spring Boot 開發項目,有以下幾方面優勢∶
從軟件發展的角度來講,越簡單的開發模式越流行,簡單的開發模式解放出更多生產力,讓開發人員可以避免將精力耗費在各種配置、語法所設置的門檻上,從而更專注于業務。這點上,Spring Boot已盡可能地簡化了應用開發的門檻。Spring Boot 所集成的技術棧,涵蓋了各大互聯網公司的主流技術,跟著 Spring Boot 的路線去學習,基本可以了解國內外互聯網公司的技術特點。
四:Spring Boot 特點:
\\1. 獨立運行的 Spring 項目
Spring Boot 可以以 jar 包的形式獨立運行,Spring Boot 項目只需通過命令“ java–jar xx.jar” 即可運行。
\\2. 內嵌 Servlet 容器
Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),應用無需打成 WAR 包 。
\\3. 提供 starter 簡化 Maven 配置
Spring Boot 提供了一系列的“starter”項目對象模型(POMS)來簡化 Maven 配置。
\\4. 提供了大量的自動配置
Spring Boot 提供了大量的默認自動配置,來簡化項目的開發,開發人員也通過配置文件修改默認配置。
\\5. 自帶應用監控
Spring Boot 可以對正在運行的項目提供監控。
\\6. 無代碼生成和 xml 配置
Spring Boot 不需要任何 xml 配置即可實現 Spring 的所有配置。
五.SpringBoot怎么樣
介紹了一大堆,那 SpringBoot 的開箱即用是怎么體現的呢。
SpringBoot 官方推薦的構建應用的方式是使用 Spring Initializr,直接在網頁上選擇好構建工具、語言、SpringBoot 版本,填好自己的項目名和初始依賴,然后點Generate 按鈕,就能下載一個構建好的工程的zip包,只需要把這個包解壓之后導入IDE就可以了。
這已經是一個包含依賴的、完整的、可獨立運行的springboot應用了!你所需要做的就是往里面填充自己的業務代碼!
當然,如果能直接使用IDE來進行上述操作可以讓這個過程變得更順滑。如果你使用的是 IDEA 商業版的話,新建工程的時候直接有 Spring 的選項;如果是IDEA社區版的話,可以安裝 Spring Assistant 這個插件可以實現同樣的功能。它們的原理是幫你把連接 Spring Initializr 并下載解壓這個過程自動化了,所以只需要保持網絡暢通就行了。
img
那如果要用原生的springMVC來實現這個事情就復雜了,可以看看右邊我大概羅列的這些步驟,當時學的時候讓我我非常頭疼。要單獨安裝Tomcat,安裝的過程中要注意版本和當前的spring版本是否兼容,手動引入spring各個模塊的依賴。pom.xml就不說了,maven工程都要用到,然后還有web.xml-用來配置servlet、攔截規則、字符編碼器等等,applicationContext.xml,springmvc.xml 等一大堆xml文件……
這個過程對初學者非常不友好,記憶這些步驟和配置文件能讓人崩潰,xml這種表達方式又不是很直觀。這些東西稱為腳手架,在小公司里面會搭建這些東西就可以算半個師傅了,小弟們就可以在搭好的架子里面寫業務代碼了。
再聊回微服務,試想一下,如果我們要跟上時代的步伐,使用微服務去開發軟件,每個功能模塊都部署成一個單獨的服務,這個時候我們再使用純粹的 Spring 去開發,每開發一個服務都需要重復的搭建項目骨架,然后編寫各種配置文件,幾十幾百個服務加起來,這部分工作量是很大的,這還不算業務代碼的開發時間。這種時候就是 SpringBoot 發揮它開箱即用的特質的時候了。然后多個微服務之間再通過 Spring 全家桶里面的 SpringCloud 進行管理,比如服務注冊、服務發現等等。所以我們現在說 SpringBoot 是 Java 企業級開發的一站式解決方案。
六:總結
Spring Boot 的設計初衷是解決 Spring 各版本配置工作過于繁重的問題 ,簡化初始搭建流程、降低開發難度,使開發人員只需要專注應用程序的功能和業務邏輯實現,而不用在配置上花費太多時間。
Spring Boot 使用“默認大于配置”的理念,提供了很多已經集成好的方案 ,以便程序員在開發應用程序時能做到零配置或極簡配置。同時,為了不失靈活性,它也支持自定義操作。
Spring Boot 內置了50多種 starter,以便快速配置和使用 。比如,要使用 Email 服務,只需要添加"spring-boot-starter-mail"依賴,然后直接調用 JavaMailSender 接口發送郵件。
Spring Boot 可以看作是 Spring 框架的擴展和自動化, 它消除了在 Spring 中需要進行的 XML(Extensible Markup Language) 文件配置,使得開發變得更快、更高效、更自動化 。
Spring Boot 幫我們省去了煩瑣的配置工作,開發人員只需要專注業務邏輯開發即可 。
用一句話來說明:Spring Boot 是 Spring 框架的擴展和自動化。
七:Spring Boot和Spring的關系
不是 :從馬車到汽車那種交通出行的顛覆,從燃油車到純電動車那種能源利用的變革,從人工駕駛到AI智能那種駕駛方式的升級??傊?,不是產品的升級換代,不是誰要替換誰。
而是 :汽車從手動擋變成自動擋,然后增加無鑰匙進入、一鍵啟動、發動機自動起停、自動泊車、定速巡航...等功能。越來越多新上市的車型開始標配上面這些新技術,讓你開車更省心更輕松,把更多的注意力放在駕駛上。
八:Spring和Spring Boot區別
-
JAVA
+關注
關注
19文章
2960瀏覽量
104562 -
開發
+關注
關注
0文章
367瀏覽量
40811 -
spring
+關注
關注
0文章
338瀏覽量
14312 -
SpringBoot
+關注
關注
0文章
173瀏覽量
169
發布評論請先 登錄
相關推薦
評論