Spring SpringMVC SpringBoot SpringCloud概念、關(guān)系及區(qū)別
一、正面解讀:
Spring主要是基于IOC反轉(zhuǎn)Beans管理Bean類,主要依存于SSH框架(Struts+Spring+Hibernate)這個(gè)MVC框架,所以定位很明確,Struts主要負(fù)責(zé)表示層的顯示,Spring利用它的IOC和AOP來(lái)處理控制業(yè)務(wù)(負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)的操作),Hibernate主要作用是數(shù)據(jù)的持久化到數(shù)據(jù)庫(kù)。
SpringMVC是基于Spring的一個(gè)MVC框架,用以替代初期的SSH框架;(spring Framework本身沒(méi)有Web功能,Spring MVC使用WebApplicationContext類擴(kuò)展ApplicationContext,使得擁有web功能)。
Spring Boot是基于Spring4的條件注冊(cè)的一套快速開(kāi)發(fā)整合包
三者的發(fā)展與聯(lián)系:
Spring 最初利用“工廠模式”( DI )和“代理模式”( AOP )解耦應(yīng)用組件。大家覺(jué)得挺好用,于是按照這種模式搞了一個(gè) MVC 框架(一些用 Spring 解耦的組件),用開(kāi)發(fā) web 應(yīng)用( SpringMVC )。然后有發(fā)現(xiàn)每次開(kāi)發(fā)都要搞很多依賴,寫(xiě)很多樣板代碼很麻煩,于是搞了一些懶人整合包( starter ),這套就是 Spring Boot 。
升級(jí)云-Spring Cloud:現(xiàn)在是大數(shù)據(jù)、云時(shí)代,上云是必然選擇,那么Spring Cloud應(yīng)運(yùn)而生,
二、概念解讀
什么是spring
關(guān)于spring的定義無(wú)論是從官方還是市面上已經(jīng)很多能夠清晰明了的做出解釋了。我姑且簡(jiǎn)單定義它為一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器,Java 開(kāi)發(fā)框架,至于控制反轉(zhuǎn)、面向切面、輕量級(jí)、容器等這些自行百度,很多大牛解釋的非常清楚
什么是springMVC
這里我姑且把名詞分開(kāi)來(lái)講、spring與mvc可以更好地解釋什么是springMvc,MVC為現(xiàn)代web項(xiàng)目開(kāi)發(fā)的一種很常見(jiàn)的模式,簡(jiǎn)言之C(控制器)將V(視圖、用戶客戶端)與M(模塊,業(yè)務(wù))分開(kāi)構(gòu)成了MVC ,業(yè)內(nèi)常見(jiàn)的mvc模式的開(kāi)發(fā)框架有Struts1,Struts2等。spring作為專業(yè)的開(kāi)發(fā)web項(xiàng)目的開(kāi)源框架,springMvc為內(nèi)部的一個(gè)模塊環(huán)節(jié),同樣采取mvc設(shè)計(jì)模式。 所以在使用spring開(kāi)發(fā)web項(xiàng)目時(shí),作為核心環(huán)節(jié)的MVC可以使用struts1/struts2/springMVc
什么是Spring-boot
我的理解是這樣的、spring系列大家族里面產(chǎn)品超級(jí)多了、那么使用spring整合基礎(chǔ)框架作為項(xiàng)目架構(gòu)時(shí),大多數(shù)初級(jí)人員在搭建項(xiàng)目時(shí)話費(fèi)了很多時(shí)間也未必能搭建明白。 spring-boot就是為了解決開(kāi)發(fā)人員這個(gè)痛點(diǎn)而誕生的,說(shuō)白了就是把以前的手動(dòng)配置的過(guò)程自動(dòng)化封裝了,提供默認(rèn)的配置,借用大??偨Y(jié)的特點(diǎn)就是:
簡(jiǎn)單易用,初學(xué)者和大牛都可以輕松上手,其中的注解會(huì)給使用者提供方便;
Spring boot對(duì)第三方技術(shù)進(jìn)行了很好的封裝和整合,提供了大量第三方接口;
可以通過(guò)依賴自動(dòng)配置,不需要XML等配置文件
還提供了安全等特性姑且先不做理會(huì)。
完了現(xiàn)在boot總結(jié)就是可以快速啟動(dòng),快速構(gòu)建項(xiàng)目,在配置文件環(huán)節(jié)省去大量時(shí)間和精力,傻瓜式帶你進(jìn)入項(xiàng)目大門(mén),進(jìn)行業(yè)務(wù)邏輯編寫(xiě)。現(xiàn)在跟很多框架整合了 按照規(guī)范去配置 分分鐘上手寫(xiě)代碼
什么是spring-cloud
微服務(wù)是當(dāng)前架構(gòu)領(lǐng)域的熱門(mén)話題,要想知道什么是spring-cloud,麻煩先去弄清楚什么是微服務(wù)。 spring-colud是一種云端分布式架構(gòu)解決方案,基于spring boot,在spring boot做較少的配置,便可成為 spring cloud 中的一個(gè)微服務(wù)。 說(shuō)點(diǎn)有點(diǎn)冠冕堂皇了 我也沒(méi)用過(guò)、不過(guò)簡(jiǎn)單理解為:spring cloud也就是提供了一些常用的分布式組件,都是應(yīng)用型的,就根spring mvc差不多。
三、深入解讀Spring Cloud與 Spring Boot的概念與關(guān)系。
什么是 Spring Boot
Spring Booti簡(jiǎn)化了基于 Spring的應(yīng)用開(kāi)發(fā),通過(guò)少量的代碼就能創(chuàng)建一個(gè)獨(dú)立的、產(chǎn)品級(jí)別的 Spring應(yīng)用。 Spring Boot為 Spring平臺(tái)及第三方庫(kù)提供開(kāi)箱即用的設(shè)置,這樣你就可以有條不素地開(kāi)始。多數(shù) SpringBoot應(yīng)用只需要很少的 Spring配置。
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ā)人員不再需要定義樣板化的配置。用我的話來(lái)理解,就是Spring Boot其實(shí)不是什么新的框架,它默認(rèn)配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架。
Spring Boot的核心思想就是約定大于配置,一切自動(dòng)完成。采用 Spring Boot可以大大的簡(jiǎn)化你的開(kāi)發(fā)模式,所有你想集成的常用框架,它都有對(duì)應(yīng)的組件支持。
什么是Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用 Spring Boot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線線、負(fù)載均衠、斷路器、數(shù)據(jù)監(jiān)控等,都可以用 Spring Boot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。 Spring并沒(méi)有重復(fù)制造輪子,它只是將目前各家公司開(kāi)發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組臺(tái)起來(lái),通過(guò) Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開(kāi)發(fā)者留出了一套簡(jiǎn)單易懂、易部署和易維護(hù)的分布式系統(tǒng)開(kāi)發(fā)工具包。
微服務(wù)是可以獨(dú)立部署、水平擴(kuò)展、獨(dú)立訪問(wèn)(或者有獨(dú)立的數(shù)據(jù)庫(kù))的服務(wù)單元, Spring Cloud就是這些微服務(wù)的大管家,采用了微服務(wù)這種架構(gòu)之后,項(xiàng)目的數(shù)量會(huì)非常多, Spring Cloud做為大管家就需要提供各種方案來(lái)維護(hù)整個(gè)生態(tài)。
Spring Cloud就是一套分布式服務(wù)治理的框架,既然它是一套服務(wù)治理的框架,那么它本身不會(huì)提供具體功能性的操作,更專注于服務(wù)之間的通訊、熔斷、監(jiān)控等。因此就需要很多的組件來(lái)支持一套功能。
Spring Boot和Spring Cloud的關(guān)系
Spring Boot是 Spring的一套快速配置腳手架,可以基于 Spring Boot快速開(kāi)發(fā)單個(gè)微服務(wù), SpringCloud是一個(gè)基于 Spring Boot實(shí)現(xiàn)的云應(yīng)用開(kāi)發(fā)工具; Spring Boot專注于快速、方便集成的單個(gè)微服務(wù)個(gè)體,Spring Cloud關(guān)注全局的服務(wù)治理框架; Spring Boot使用了默認(rèn)大于配置的理念,很多集成方案已經(jīng)幫你選擇好了,能不配置就不配置, Spring Cloud很大的一部分是基于 Spring Boot來(lái)實(shí)現(xiàn),可以不基于 Spring Boot嗎?不可以。 Spring Boot可以離開(kāi) Spring Cloud獨(dú)立使用開(kāi)發(fā)項(xiàng)目,但是 Spring Cloud離不開(kāi) Spring Boot,屬于依賴的關(guān)系
Spring-> Spring Boot> Spring Cloud這樣的關(guān)系
Spring Cloud架構(gòu)
我們從整體來(lái)看一下 Spring Cloud主要的組件,以及它的訪間流程
1、外部或者內(nèi)部的非 Spring Cloud目都統(tǒng)一通過(guò)API網(wǎng)關(guān)(Zuul)來(lái)訪可內(nèi)部服務(wù).
2、網(wǎng)關(guān)接收到請(qǐng)求后,從注冊(cè)中心( Eureka)獲取可用服務(wù)
3、由 Ribbon進(jìn)行均負(fù)載后,分發(fā)到后端的具體實(shí)例
4、徹服務(wù)之間通過(guò) Feign進(jìn)行通信處理業(yè)務(wù)
5、 Hystrix負(fù)責(zé)處理服務(wù)超時(shí)熔斷
6、 Turbine監(jiān)控服務(wù)間的調(diào)用和焠斷相關(guān)指標(biāo)
綜上所述,是 Spring Cloud與 Spring Boot的概念及關(guān)系,為了更好的學(xué)習(xí),請(qǐng)大家務(wù)必要熟練掌握相關(guān)內(nèi)容
--------------------- 本文來(lái)自 奮斗碼農(nóng) 的CSDN 博客 ,全文地址請(qǐng)點(diǎn)擊:https://blog.csdn.net/xufei512/article/details/79710606?utm_source=copy
浙公網(wǎng)安備 33010602011771號(hào)