您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關SpringCloud 和SpringBoot 有什么區別,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一 . SpringBoot
1.簡介
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
SpringBoot是由Pivotal團隊在2013年開始研發、2014年4月發布第一個版本的全新開源的輕量級框架。它基于Spring4.0設計,不僅繼承了Spring框架原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩定性等問題得到了很好的解決。
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。Spring集成多種事務模板,系統可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發人員在開發過程中認為現有的StrutsWeb框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創建了SpringMVC。
2.特點
SpringBoot所具備的特征有:
(1)可以創建獨立的 Spring應用程序,并且基于其Maven或Gradle插件,可以創建可執行的JARs和WARs;
(2)內嵌Tomcat或Jetty等Servlet容器;
(3)提供自動配置的“starter”項目對象模型(POMS)以簡化 Maven配置;
(4)盡可能自動配置Spring容器;
(5)提供準備好的特性,如指標、健康檢查和外部化配置;
(6)絕對沒有代碼生成,不需要XML配置。
3.重要策略
SpringBoot框架中還有兩個非常重要的策略: 開箱即用和 約定優于配置。開箱即用,Outofbox,是指在開發過程中,通過在MAVEN項目的pom文件中添加相關依賴包,然后使用對應注解來代替繁瑣的XML配置文件以管理對象的生命周期。這個特點使得開發人員擺脫了復雜的配置工作以及依賴的管理工作,更加專注于業務邏輯。約定優于配置,Convention over configuration,是一種由SpringBoot本身來配置目標結構,由開發者在結構中添加信息的軟件設計范式。這一特點雖降低了部分靈活性,增加了BUG定位的復雜性,但減少了開發人員需要做出決定的數量,同時減少了大量的XML配置,并且可以將代碼編譯、測試和打包等工作自動化。
SpringBoot應用系統開發模板的基本架構設計從前端到后臺進行說明:前端常使用模板引擎,主要有 FreeMarker和Thymeleaf,它們都是用 Java語言編寫的,渲染模板并輸出相應文本,使得界面的設計與應用的邏輯分離,同時前端開發還會使用到Bootstrap、AngularJS、J Query等;在瀏覽器的數據傳輸格式上采用 Json,非xml,同時提供 RESTfulAPI; SpringMVC框架用于數據到達服務器后處理請求;到數據訪問層主要有Hibernate、 MyBatis、JPA等持久層框架;數據庫常用 MySQL;開發工具推薦IntelliJIDEA。
4. 核心原理
SpringBoot的核心原理是基于SpringMVC無配置文件完全注解化 + 內置Tomcat實現SpringBoot框架,使用Main函數啟動.
二 . SpringCloud
1.簡介
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud并沒有重復制造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合并管理起來,為各個微服務之間提供,配置管理、服務發現、斷路器、路由、等集成服務
SpringBoot不依賴于SpringCloud,SpringCloud依賴于SpringBoot,屬于依賴關系
2.特點
優點:
1) 服務拆分粒度更細,有利于資源重復利用,有利于提高開發效率
2) 可以更精準的制定優化服務方案,提高系統的可維護性
3) 微服務架構采用去中心化思想,服務之間采用Restful等輕量級通訊,比ESB更輕量
4) 適于互聯網時代,產品迭代周期更短
缺點:
1) 微服務過多,治理成本高,不利于維護系統
2) 分布式系統開發的成本高(容錯,分布式事務等)對團隊挑戰大
總的來說優點大過于缺點,目前看來SpringCloud是一套非常完善的分布式框架,目前很多企業開始用微服務
3. 常用組件
SpringCloud 主要涉及的組件包括 :
1) Eureka : 服務注冊中心,用于管理服務(服務的注冊、發現)
2)Ribbon : 負載均衡,用于搭建集群環境.(同一個功能配置多個tomcat,負載均衡會選擇多個tomcat其中一個)
3)Hystrix : 熔斷器,與正主斷了聯系,使用備選方案.能夠防止服務的雪崩效應.
4)Feign : 服務調用/遠程調用 , 服務與服務之間進行調用,類似于HttpClient
5)Zuul : 服務網關,用于統一程序入口,方便進行管理,提供路由轉發、請求過濾等功能
4.核心原理
想了解更多關于SpringCloud的詳細信息的話可以訪問以下內容
<<超詳細的SpringCloud底層原理>>
三 . 區別
SpringBoot 和 SpringCloud 有以下區別 :
1) SpringBoot專注于快速方便的開發單個個體微服務。
2) SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合并且管理起來,為各個服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、精選決策、分布式會話等集成服務。
3) SpringBoot可以離開SpringCloud獨立開發項目,但是SpringCloud離不開SpringBoot,屬于依賴關系。
4) SpringBoot專注于快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。
這就是小喵今天所要分享的知識,
結尾再附上一個小小的面試題 :
什么是SpringBoot ? 什么是SpringCloud ?兩者之間有什么區別?
1) springboot是一個快速開發框架,專注于快速方便的開發單個個體的微服務,
為什么是快速開發框架: 它是一個服務于spring框架的框架,它簡化了配置文件,可以快速構建web應用,內置tomcat,無需打包部署,直接運行。
核心原理:是基于SpringMVC無配置文件完全注解化+內置tomcat實現SpringBoot框架,使用Main函數啟動.
2) SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合并管理起來,為各個微服務之間提供,配置管理、服務發現、斷路器、路由、等集成服務
3) SpringBoot不依賴于SpringCloud,SpringCloud依賴于SpringBoot,屬于依賴關系
關于SpringCloud 和SpringBoot 有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。