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