Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程,該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。 Spring Boot默認配置了不少框架的使用方式,就像 Maven整合了全部的Jar包,Spring Boot整合了全部的框架。它的核心設計思想是∶約定優於配置,Spring Boot全部開發細節都是依據此思想進行實現的。數據庫
約定優於配置(Convention Over Configuration),也稱做按約定編程,是一種軟件設計範式,旨在減小軟件開發人員需作決定的數量、得到簡單的好處,而又不失靈活性。
本質是說,開發人員僅需規定應用中不符約定的部分。例如,若是模型中有個名爲 User 的類,那麼數據庫中對應的表就會默認命名爲 user。只有在偏離這一約定時,例如將該表命名爲"user info",才需寫有關這個名字的配置。咱們能夠按照這個思路來設想,咱們約定 Controller 層就是 Web 請求層能夠省略 MVC的配置;咱們約定在 Service 結尾的類自動注入事務,就能夠省略了 Spring 的切面事務配置。在 Spring 體系中,Spring Boot JPA就是約定優於配置最佳實現之一,不須要關注表結構,咱們約定類名便是表名,屬性名便是表的字段,String 對應varchar,long 對應 bigint,只有須要一些特殊要求的屬性,咱們再單獨進行配置,按照這個約定咱們能夠將之前的工做大大簡化。
Spring Boot 體系將約定優於配置的思想展示得淋漓盡致,小到配置文件、中間件的默認配置,大到內置容器、生態中的各類 Starters無不遵循此設計規則。Spring Boot 鼓勵各軟件組織方建立本身的Starter,建立 Starter 的核心組件之一就是 autoconfigure模塊,也是 Starter 的核心功能,在啓動的時候進行自動裝配,屬性默認化配置。能夠說正是由於 Spring Boot 簡化的配置和衆多的 Starters 才讓 Spring Boot 變得簡單、易用、快速上手,也能夠說正是約定優於配置的思想完全落地才讓 Spring Boot 走向輝煌。Spring Boot 約定優於配置的思想讓 Spring Boot 項目很是容易上手,讓編程變得更簡單,其實編程本該很簡單,簡單纔是編程的美。編程
Spring Boot Starters 基於約定優於配置的理念來設計,Spring Boot Starter 中有兩個核心組件∶ 自動配置代碼和提供自動配置模塊及其它有用的依賴。也就意味着當咱們項目中引入某個 Starter,即擁有了此軟件的默認使用能力,除非咱們須要特定的配置,通常狀況下我僅須要少許的配置或者不配置便可使用組件對應的功能。Spring Boot 由衆多Starter 組成,隨着版本的推移 Starter 家族成員也與日俱增。在傳統 Maven 項目中一般將一些層、組件拆分爲模塊來管理,以便相互依賴複用,在 Spring Boot 項目中咱們則能夠建立自定義 Spring Boot Starter 來達成該目的。
Spring Boot 擁有強大融合社區開源軟件的能力,在沒有使用 Spring Boot 以前,咱們須要按照每一個開源軟件的特性,將對應的組件包集成到咱們的開發項目中,由於每一個組件的設計理念和開發團隊都不一致,所以會有不少不一樣的調用風格在咱們的項目中。Spring Boot 整合了主流的開源軟件造成了一系列的 Starter,讓咱們有了一致的編程體驗來集成各類軟件,Spring Boot 在集成的時候作了大量的優化,讓咱們在集成的時候每每只須要不多的配置和代碼就能夠完成。能夠說各類 Starters 就是 Spring Boot 最大的優點之一。Spring Boot 是一套全新的框架,它來自於 Spring你們族,所以 Spring 全部具有的功能它都有而且更容易使用;同時還簡化了基於 Sp ring 的應用開發,經過少許的代碼就能建立一個獨立的、產品級別的 Spring 應用。安全
Spring Boot自己並不提供Spring框架的核心特性以及擴展功能,只是用於快速、敏捷地開發新一代基於Spring 框架的應用程序。同時它集成了大量經常使用的第三方庫配置(如 Redis、MongoDB、JP A、RabbitMQ、Quartz等),Spring Boot 應用中這些第三方庫幾乎能夠零配置進行開箱即用,大部分的Spring Boot應用都只須要很是少許的配置代碼,開發者可以更加專一於業務邏輯。
使用 Spring Boot 開發項目,有如下幾方面優點∶架構
從軟件發展的角度來說,越簡單的開發模式越流行,簡單的開發模式解放出更多生產力,讓開發人員能夠避免將精力耗費在各類配置、語法所設置的門檻上,從而更專一於業務。這點上,Spring Boot已儘量地簡化了應用開發的門檻。Spring Boot 所集成的技術棧,涵蓋了各大互聯網公司的主流技術,跟着 Spring Boot 的路線去學習,基本能夠了解國內外互聯網公司的技術特色。負載均衡
Spring最初核心的兩大核心功能 Spring loC和 Spring Aop 成就了Spring,Spring在這兩大核心功能上不斷地發展,纔有了Spring事務、Spring MVC等一系列偉大的產品,最終成就了Spring帝國,到了後期 Spring 幾乎能夠解決企業開發中的全部問題。
Spring Boot是在強大的 Spring 帝國生態基礎上面發展而來,發明Spring Boot不是爲了取代 Spring,是爲了讓人們更容易的使用 Spring。因此說沒有 Spring強大的功能和生態,就不會有後期 Spring Boot 的火熱,Spring Boot使用約定優於配置的理念,從新重構了Spring 的使用,讓 Spring 後續的發展更有生命力。Spring Boot並無重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,經過 Spring Boot風格進行再封裝並屏蔽掉複雜的配置和實現原理,最終給開發者提供了一套簡單易懂、易部署、易維護的分佈式系統開發工具包。
Spring Cloud是一系列框架的有序集合,它利用 Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發。服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,均可以用 Spring Boot 的開發風格作到一鍵啓動和部署。Spring Cloud是爲了解決微服務架構中服務治理而提供的具有一系列功能的開發框架,而且 Spring Cloud是徹底基於Spring Boot 而開發,Spring Cloud利用 Spring Boot特性整合了開源行業中優秀的組件,總體對外提供了一套在微服務架構中服務治理的解決方案。
綜上咱們能夠這樣來理解,正是因爲 Spring loC和 Spring Aop 兩個強大的功能纔有了Spring,Spring生態不斷的發展纔有了Spring Boot,使用 Spring Boot讓Spring 更易用更有生命力,Spring Cloud是基於 Spring Boot 開發的一套微服務架構下的服務治理方案。框架