如今 Spring Boot 很是火,各類技術文章,各類付費教程,多如牛毛,可能還有些不知道 Spring Boot 的,那它究竟是什麼呢?有什麼用?今天給你們詳細介紹一下。java
Spring Boot 的背景 瞭解 Spring Boot 必須先說說 Spring 框架!git
在 Java 後端框架繁榮的今天,Spring 框架無疑是最最火熱,也是必不可少的開源框架,更是穩坐 Java 後端框架的龍頭老大。github
用過 Spring 框架的都知道 Spring 能流行是由於它的兩把利器:IOC 和 AOP,IOC 能夠幫助咱們管理對象的依賴關係,極大減小對象的耦合性,而 AOP 的切面編程功能能夠更方面的使用動態代理來實現各類動態方法功能(如事務、緩存、日誌等)。web
而要集成 Spring 框架,必需要用到 XML 配置文件,或者註解式的 Java 代碼配置。不管是使用 XML 或者代碼配置方式,都須要對相關組件的配置有足夠的瞭解,而後再編寫大量冗長的配置代碼。spring
而後又有多少開發人員能精通這些配置呢?若是咱們只提供一些配置參數讓框架能自動配置這些組件,那是否是 so easy?編程
基於簡化 Spring 快速上手爲目的,Spring Boot 框架誕生了!後端
什麼是 Spring Boot? Spring Boot是 Spring 開源組織下的一個子項目,也是 Spring 組件一站式解決方案,主要是爲了簡化使用 Spring 框架的難度,簡省繁重的配置。緩存
Spring Boot提供了各類組件的啓動器(starters),開發者只要能配置好對應組件參數,Spring Boot 就會自動配置,讓開發者能快速搭建依賴於 Spring 組件的 Java 項目。tomcat
Spring Boot不但能建立傳統的 war 包應用,還能建立獨立的不依賴於任何外部容器(如:tomcat)的獨立應用,使用java -jar命令就能啓動。同時,Spring Boot也提供了一個命令行工具來執行 Spring 的腳本。安全
Spring Boot 的官方網站:
projects.spring.io/spring-boot…
Spring Boot 的源碼:
Spring Boot 的設計目標若是你不清楚 Spring 是幹嗎用的,那再來看看設計它的目標和初衷是什麼!
· 爲 Spring 應用開發提供一個更快、更容易上手的入門體驗;
· 提供一系列在大型項目中常常用到的公共的非功能性特性,如:內嵌入服務器、安全、度量指標、健康檢測、外部化配置;
· 零代碼配置生成及零 XML 配置;
Spring Boot 爲何能這麼火? Spring Boot 爲何能這麼火?是由於它有如下幾個特點。
一、獨立運行
Spring Boot內嵌了各類 Servlet 容器,Tomcat、Jetty等,如今再也不須要打成 war 包部署到容器中,Spring Boot 只要打成一個可執行的jar包就能獨立運行,全部的依賴包都在一個 jar 包內。
二、簡化 Maven 配置
如上圖所示,如今只要依賴spring-boot-starter-web啓動器包,它包含全部 web 開發全部的依賴,就能擁有 Spring Web 的能力,極大簡少了 maven 對依賴的配置。
使用 Maven 命令:mvn dependency:tree也能夠看到完整的依賴樹:
三、自動配置Spring Boot能根據當前類路徑下的類或者 jar 包裏面來的類來自動配置 Spring Bean,如添加一個spring-boot-starter-web啓動器就能擁有 web 的功能,無需其餘配置。也能夠在配置文件中添加相關配置來自定義裝配,這個後面的課程會講到,請關注後續內容。
四、無代碼生成和XML配置
Spring Boot配置過程當中無代碼生成,也無需XML配置文件就能完成全部配置工做,這一切都是藉助於條件註解完成的,這也是 Spring 4+ 的核心功能之一。
五、應用監控 Spring Boot提供一系列端點能夠監控服務及應用,能對Spring 應用作健康檢測。
Spring Boot 的缺點 說了這麼多 Spring Boot 的優勢和特點,雖然上手很容易,但也不是沒有缺點。任何框架都有其優缺點,Spring Boot 也不例外,我大概能夠總結有如下幾個缺點。
一、須要很是瞭解 Spring Boot 的核心技術原理,否則一旦遇到問題就很棘手。由於什麼東西都集成了,自動配置化。這樣,須要對配置信息很是熟悉,要找起問題來不是很容易。
二、從原始 Spring 項目很難平滑遷移至 Spring Boot 框架上來,由於有些歷史老舊的 XML 配置沒法經過 Java 來配置,還須要額外的 XML 文件就不是很完美。再好比,以前是獨立的 Tomcat,什麼參數都在線上配置好了,你改成內置的 Tomcat 就會遇到不少問題。
相對於優勢來講,這些缺點也都不算什麼。總之,Spring Boot 是值得咱們任何一個 Java 開發者嘗試摸索的。