1. 程式人生 > >909422229_閒談Spring與springboot區別

909422229_閒談Spring與springboot區別

一、百度百科

spring

(由Rod Johnson建立的一個開源框架)

Spring是一個開放原始碼的設計層面框架,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向介面的程式設計思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的複雜性而建立的。框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個元件,同時為 J2EE 應用程式開發提供整合的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和麵向切面(AOP)。

簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。

二、spring boot

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。

重點來了:

SpringMvc和springboot的區別

Spring 框架就像一個家族,有眾多衍生產品例如 boot、security、jpa等等。但他們的基礎都是Spring 的 ioc和 aop ioc 提供了依賴注入的容器 aop ,解決了面向橫切面的程式設計,然後在此兩者的基礎上實現了其他延伸產品的高階功能。Spring MVC是基於 Servlet 的一個 MVC 框架 主要解決 WEB 開發的問題,因為 Spring 的配置非常複雜,各種XML、 JavaConfig、hin處理起來比較繁瑣。於是為了簡化開發者的使用,從而創造性地推出了Spring boot,約定優於配置,簡化了spring的配置流程。

說得更簡便一些:Spring 最初利用“工廠模式”(DI)和“代理模式”(AOP)解耦應用元件。大家覺得挺好用,於是按照這種模式搞了一個 MVC框架(一些用Spring 解耦的元件),用開發 web 應用( SpringMVC )。然後有發現每次開發都寫很多樣板程式碼,為了簡化工作流程,於是開發出了一些“懶人整合包”(starter),這套就是 Spring Boot。

Spring MVC的功能

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

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

Spring Boot的功能

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只是承載者,輔助你簡化專案搭建過程的。如果承載的是WEB專案,使用Spring MVC作為MVC框架,那麼工作流程和你上面描述的是完全一樣的,因為這部分工作是Spring MVC做的而不是Spring Boot。

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

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

Spring 是一個“引擎”;

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

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

三、 下文類同  

Spring Boot是一套遵循的約定大於配置的體系,簡化了很多元件的使用比如datasouce、JPA、SpringMVC等等,約定好自動化的配置,就可以使用功能。使用的技術還是Spring體系的,Spring mvc在其中也有使用。同時SpringBoot有各種starter,包含了當前功能必須的各種Maven依賴,簡化了依賴衝突的管理問題。本質來說就是個常用開發框架整合包,類似與專案開始開發拿到的初始可執行框架。

SpringMVC是一個Spring解決WEB開發問題提供的一個MVC框架,框架的使用配置需要開發人員自行配置,依賴也需要自行引入,只是搭建專案可執行框架的一部分。

開發中,突出的差別體現感覺是在:

1. 註解和xml配置的使用上,SpringBoot基本可以用註解實現所有功能。

2. 啟動方式變更,以前的大部分都是打包後放在諸如tomcat之類的容器執行,現在SpringBoot內建了容器,通過Applicaiton的main函式可以直接執行。