1. 程式人生 > >Spring(概念篇):Spring、SpringMVC、SpringBoot以及SpringCloud的概念、關係與區別(詳解)

Spring(概念篇):Spring、SpringMVC、SpringBoot以及SpringCloud的概念、關係與區別(詳解)

Spring與Spring MVC

Spring

Spring是一個一站式的輕量級的Java開發框架

Spring是一個一站式的輕量級的Java開發框架,核心是控制反轉(IOC)和麵向切面(AOP),針對於開發的WEB層(SpringMVC)、業務層(IOC)、持久層(jdbc Template)等都提供了多種配置解決方案;

Spring主要是基於IOC反轉Beans管理Bean類,主要依存於SSH框架(Struts+Spring+Hibernate)這個MVC框架,所以定位很明確,Struts主要負責表示層的顯示,Spring利用它的IOC和AOP來處理控制業務(負責對資料庫的操作),Hibernate主要作用是資料的持久化到資料庫。

Spring MVC

Spring MVC提供了一種輕度耦合的方式來開發web應用。

Spring MVC是Spring基礎之上的一個MVC框架,主要處理web開發的路徑對映和檢視渲染,屬於Spring框架中WEB層開發的一部分。

Spring MVC是Spring的一個模組,是一個web框架。通過Dispatcher Servlet,ModelAndView 和 View Resolver,開發web應用變得很容易。解決的問題領域是網站應用程式或者服務開發——URL路由、Session、模板引擎、靜態Web資源等等。

SpringMVC是基於Spring的一個MVC框架,用以替代初期的SSH框架;(Spring Framework本身沒有Web功能,Spring MVC使用WebApplicationContext類擴充套件ApplicationContext,使得擁有web功能)。

Spring MVC和Spring Boot

Spring MVC

SpringMVC是框架,專案中實際執行的程式碼。

Spring MVC屬於一個企業WEB開發的MVC框架,涵蓋麵包括前端檢視開發、檔案配置、後臺介面邏輯開發等,XML、config等配置相對比較繁瑣複雜;

Spring Boot

Spring Boot只是一個配置工具,整合工具,輔助工具。

Spring Boot框架相對於Spring MVC框架來說,更專注於開發微服務後臺介面,不開發前端檢視;

習慣優於配置,還是約定大於配置呢?

個人專欄正在更新:https://blog.csdn.net/column/details/28939.html

Spring Boot實現了自動配置,降低了專案搭建的複雜度。

眾所周知Spring框架需要進行大量的配置,Spring Boot引入自動配置的概念,讓專案設定變得很容易。Spring Boot本身並不提供Spring框架的核心特性以及擴充套件功能,只是用於快速、敏捷地開發新一代基於Spring框架的應用程式。也就是說,它並不是用來替代Spring的解決方案,而是和Spring框架緊密結合用於提升Spring開發者體驗的工具。同時它集成了大量常用的第三方庫配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot應用中這些第三方庫幾乎可以零配置的開箱即用(out-of-the-box),大部分的Spring Boot應用都只需要非常少量的配置程式碼,開發者能夠更加專注於業務邏輯。

對使用者來說,換用Spring Boot以後,專案初始化方法變了,配置檔案變了,另外就是不需要單獨安裝Tomcat這類容器伺服器了,maven打出jar包直接跑起來就是個網站,但你最核心的業務邏輯實現與業務流程實現沒有任何變化。

Spring Boot和Spring Cloud

Spring Boot快速啟動,快速構建專案。

Spring Boot使用了預設大於配置的理念,集成了快速開發的Spring多個外掛,同時自動過濾不需要配置的多餘的外掛,簡化了專案的開發配置流程,一定程度上取消xml配置,是一套快速配置開發的腳手架,能快速開發單個微服務;

Spring Cloud是一種雲端分散式架構解決方案。

Spring Cloud大部分的功能外掛都是基於Spring Boot去實現的,Spring Cloud關注於全域性的微服務整合和管理,將多個Spring Boot單體微服務進行整合以及管理;Spring Cloud依賴於Spring Boot開發,而Spring Boot可以獨立開發;

總結:

  1. Spring 框架就像一個家族,有眾多衍生產品例如 boot、security、jpa等等。但他們的基礎都是Spring的ioc、aop等。其中, ioc 提供了依賴注入的容器, aop解決了面向橫切面程式設計,然後在此兩者的基礎上實現了其他延伸產品的高階功能;
  2. Spring MVC是基於Servlet 的一個MVC框架主要解決WEB開發的問題,因為Spring的配置非常複雜,各種XML、JavaConfig、servlet處理起來比較繁瑣;
  3. 為了簡化開發者的使用,從而創造性地推出了springBoot框架,預設優於配置,簡化了springMvc的配置流程;
  4. 但區別於springMvc的是,springBoot專注於微服務方面的介面開發,和前端解耦,雖然springBoot也可以做成springMvc前後臺一起開發,但是這就有點不符合springBoot框架的初衷了;
  5. Spring 最初利用“工廠模式”(DI)和“代理模式”(AOP)解耦應用元件。大家覺得挺好用,於是按照這種模式搞了一個 MVC框架(一些用Spring 解耦的元件),用開發 web 應用( SpringMVC )。然後發現每次開發都寫很多樣板程式碼,為了簡化工作流程,於是開發出了一些“懶人整合包”(starter),這套就是 Spring Boot。
  6. Spring Boot只是承載者,輔助你簡化專案搭建過程的。如果承載的是WEB專案,使用Spring MVC作為MVC框架,那麼工作流程和你上面描述的是完全一樣的,因為這部分工作是Spring MVC做的而不是Spring Boot。
  7. 對於springCloud框架來說,它和springBoot一樣,注重的是微服務的開發,但是springCloud更關注的是全域性微服務的整合和管理,相當於管理多個springBoot框架的單體微服務;

所以,用最簡練的語言概括就是:

Spring 是一個“引擎”;

Spring MVC 是基於Spring的一個 MVC 框架;

Spring Boot 是基於Spring4的條件註冊的一套快速開發整合包;

Spring Cloud 是在Spring Boot之上的全域性微服務的整合和管理。