javascript
Spring、SpringMVC、SpringBoot、SpringCloud的关系分享
最近在做一些技術(shù)架構(gòu)原型,發(fā)現(xiàn)Spring已經(jīng)跟三四年前發(fā)生了很多的區(qū)別,技術(shù)的迭代日新月異,再不學(xué)習(xí)就趕不上時(shí)代的腳步 ,以下是最近關(guān)于Spring、SpringMVC、SpringBoot、SpringCloud幾者的概念說明及關(guān)系分享:
?
-
概念說明:
-
Spring
Spring是一個(gè)一站式的輕量級(jí)的java開發(fā)框架,核心是控制反轉(zhuǎn)(IOC)和面向切面(AOP),針對(duì)于開發(fā)的WEB層(springMvc)、業(yè)務(wù)層(Ioc)、持久層(jdbcTemplate)等都提供了多種配置解決方案;
-
SpringMVC
SpringMVC 是在Spring基礎(chǔ)之上的一個(gè)MVC框架,主要處理web開發(fā)的路徑映射和視圖渲染,屬于Spring框架中WEB層開發(fā)的一部分;
-
SpringBoot
Spring Boot使用了約定大于配置(PS:很多博客寫的是默認(rèn)大于配置,嚴(yán)格來說,約定更精確)的理念,集成了快速開發(fā)的spring多個(gè)插件,同時(shí)自動(dòng)過濾不需要配置的多余的插件,簡(jiǎn)化了項(xiàng)目的開發(fā)配置流程,一定程度上取消xml配置,是一套快速配置開發(fā)的腳手架,能快速開發(fā)單個(gè)微服務(wù);
-
SpringCloud
Spring Cloud大部分的功能插件都是基于Spring Boot去實(shí)現(xiàn)的,Spring Cloud關(guān)注于全局的微服務(wù)整合和管理,將多個(gè)Spring Boot單體微服務(wù)進(jìn)行整合以及管理;? Spring Cloud依賴于Spring Boot開發(fā),而Spring Boot可以獨(dú)立開發(fā);
-
關(guān)系分析:
在關(guān)系分析上,主要區(qū)分的是Spring和Spring?MVC、Spring?MVC和Spring Boot、Spring?和Spring?Boot、Spring?Boot和Spring?Cloud之間的關(guān)系,具體如下:
Spring和Spring MVC:
?
SpringMVC 是在Spring基礎(chǔ)之上的一個(gè)MVC框架,主要處理WEb應(yīng)用開發(fā)
?
Spring MVC和Spring Boot:
?
SpringBoot框架相對(duì)于Spring MVC框架來說,更專注于開發(fā)微服務(wù)后臺(tái)接口,不開發(fā)前端視圖;
?
Spring 、Spring?MVC和Spring?Boot:
?
Spring 最初利用“工廠模式”( DI )和“代理模式”( AOP )解耦應(yīng)用組件。大家覺得挺好用,于是按照這種模式搞了一個(gè) MVC 框架(一些用 Spring 解耦的組件),用開發(fā) web 應(yīng)用( Spring MVC )。然后有發(fā)現(xiàn)每次開發(fā)都要搞很多依賴,寫很多樣板代碼很麻煩,于是搞了一些懶人整合包( starter ),這套就是 Spring Boot 。?
?
Spring Boot和Spring Cloud:
?
一個(gè)偏宏觀,一偏微觀?
Spring Boot就是醫(yī)院里面一個(gè)一個(gè)的科室,而Cloud就是把Boot組合起來的提供對(duì)外的綜合醫(yī)院。?
Spring Boot可以單獨(dú)使用,它不依賴于Spring Cloud?
1. 而Spring Cloud必然依賴于Spring Boot,屬于依賴關(guān)系。?
2. Spring Boot專注于快速方便的開發(fā)單個(gè)個(gè)體微服務(wù)。?
3. Spring Cloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,它將Spring Boot開發(fā)的一個(gè)個(gè)單體微服務(wù)整合并管理起來,
為各個(gè)微服務(wù)之間提供,配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、全局鎖、決策競(jìng)選、分布式會(huì)話等等集成服務(wù)。
?
-
選型建議:
現(xiàn)在技術(shù)發(fā)展的趨勢(shì),從我的判斷來看,遵循小而美、精細(xì)分工、大道至簡(jiǎn)的原則,就像Spring?Boot一樣,越簡(jiǎn)單好用越流行,未來的市場(chǎng)也越廣泛,同樣的像SaaS、Flutter、Idea等不管是單獨(dú)的技術(shù)還是工具,大而全已經(jīng)不能滿足復(fù)雜的應(yīng)用場(chǎng)景,我們更喜歡針對(duì)某一個(gè)應(yīng)用場(chǎng)景有一個(gè)非常好的支撐,然后又能跟做彈性伸縮、負(fù)載均衡、自由搭配組合,所以從目前來看,在技術(shù)選型上,
如果是新的項(xiàng)目,建議直接從Spring?Boot開始搭建框架,建設(shè)項(xiàng)目,前端或移動(dòng)端,則使用Flutter的Dart語言編寫,搭配Docker、K8S等技術(shù),再把MySQL的開源版本、或者PostgreSQL、MongoDB、Hbase等用起來,現(xiàn)在的技術(shù)上手速度已經(jīng)很快了,相對(duì)于三四年前,學(xué)習(xí)成本很低,資源也比較豐富,像阿里云學(xué)院、華為云學(xué)院、慕課網(wǎng)等均有免費(fèi)的入門或?qū)崙?zhàn)視頻,只要認(rèn)真學(xué)習(xí)和聯(lián)系,很多都可以融會(huì)貫通,再結(jié)合實(shí)際的項(xiàng)目,掌握起來并不難
如果是舊的項(xiàng)目,或是比較陳舊的框架,建議盡快使用當(dāng)前流行且穩(wěn)定的技術(shù)框架進(jìn)行升級(jí)改造,未來技術(shù)的迭代速度會(huì)更快,很多技術(shù)之間雖然有所差異,但是基本也都是在相互借鑒彼此的優(yōu)點(diǎn),并進(jìn)行吸收和再發(fā)展,所以只要基礎(chǔ)扎實(shí),隨著技術(shù)的發(fā)展,未來的業(yè)務(wù)應(yīng)用或產(chǎn)品研發(fā),只會(huì)越來越容易
更多的時(shí)候,我們所要關(guān)注的是技術(shù)核心的理念和思想,以及關(guān)注業(yè)務(wù)的發(fā)展及生態(tài)的建設(shè)!
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Spring、SpringMVC、SpringBoot、SpringCloud的关系分享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速构建网站或移动端页面:关于Boots
- 下一篇: getElementsByName 的应