# Spring,Spring MVC,Spring Boot 三者比較 ### <font color='red'>Spring</font> 說到Spring,一般指代的是Spring Framework,它是一個開源的應用程式框架,提供了一個簡易的開發方式,通過這種開發方式,將避免那些可能致使程式碼變得繁雜混亂的大量的業務/工具物件,說的更通俗一點就是由框架來幫你管理這些物件,包括它的建立,銷燬等,比如基於Spring的專案裡經常能看到的Bean。 Spring IOC提供的如通過單例減少建立無用的物件,通過延遲載入優化初始化成本等。 當然,Spring 的核心功能遠不知這些,如: Spring AOP Spring JDBC Spring MVC Spring ORM Spring JMS Spring Test 其實不通過Spring框架依然可以實現這些功能特定,但是Spring 提供了更優雅的抽象介面以方便對這些功能的組裝,同時又給予每個具體實現以靈活的配置;另外,基於Spring,你可以方便的與其他框架進行整合,如hibernate。 ### <font color='red'>Spring MVC</font> Spring MVC提供了一種輕度耦合的方式來開發web應用。 Spring MVC是Spring的一個模組,一個web框架。通過Dispatcher Servlet、ModelAndView 和 View Resolver,包括前端檢視開發、檔案配置、後臺介面邏輯開發等,XML、config等配置相對比較繁瑣複雜;解決的問題領域是網站應用程式或者服務開發——URL路由、Session、模板引擎、靜態Web資源等等。 SpringMVC是基於Spring的一個MVC框架,用以替代初期的SSH框架;(Spring Framework本身沒有Web功能,Spring MVC使用WebApplicationContext類擴充套件ApplicationContext,使得擁有web功能)。 ### <font color='red'>Spring Boot</font> Spring Boot只是一個配置工具,整合工具,輔助工具。 Spring Boot只是擴展了Spring framework,實現自動配置,降低專案搭建的複雜度。 Spring Boot框架相對於Spring MVC框架來說,更專注於開發微服務後臺介面,不開發前端檢視。 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提供的一些功能 > 1. 固定的’starter’依賴(dependency)來更簡單地組建應用設定 > 2. 植入伺服器來避免複雜的系統佈置 > 3. 衡量、運作生命確認、外部化設定 > 4. 針對Spring各式套件自動化組建設置-只要有可能 在Spring Boot中,你會發現你引入的所有包都是starter形式,如: > spring-boot-starter-web-services,針對SOAP Web Services > spring-boot-starter-web,針對Web應用與網路介面 > spring-boot-starter-jdbc,針對JDBC > spring-boot-starter-data-jpa,基於hibernate的持久層框架 > spring-boot-starter-cache,針對快取支援 :::info Starters是一系列及其方便的依賴描述,通過在你的專案中包含這些starter,你可以一站式獲得你所需要的服務,而無需像以往那樣copy各種示例配置及程式碼,然後除錯,真正做到開箱即用;比如你想使用Spring JPA進行資料操作,只需要在你的專案依賴中引入spring-boot-starter-data-jpa即可 ::: ### <font color='red'>三者關係圖</font> SpringMVC < Spring < Spring Boot   ### <font color='red'>總結:</font> Spring MVC和Spring Boot都屬於Spring。 Spring MVC 是基於Spring的一個 MVC 框架, Spring Boot 是基於Spring的一套快速開發整合包。 Spring 就像一個大家族,有眾多衍生產品例如 Boot,Security,JPA等等。但他們的基礎都是Spring 的 IOC 和 AOP,IOC提供了依賴注入的容器,而AOP解決了面向切面的程式設計,在此兩者的基礎上實現了其他衍生產品的高階功能; Spring MVC是基於 Servlet 的一個 MVC 框架,主要解決 WEB 開發的問題,因為 Spring 的配置非常複雜,各種xml,properties處理起來比較繁瑣。 於是為了簡化開發者的使用,Spring社群創造性地推出了Spring Boot,它遵循約定優於配置,極大降低了Spring使用門檻,但又不失Spring原本靈活強大的功能。 Spring 最初利用“工廠模式”(DI)和“代理模式”(AOP)解耦應用元件。大家覺得挺好用,於是按照這種模式搞了一個MVC框架(一些用Spring解耦的元件),用來開發web應用,最終形成了SpringMVC。然後有發現每次開發都寫很多樣板程式碼,為了簡化工作流程,於是開發出了一些“懶人整合包”(starter),這套就是 Spring Boot。 資料來源: [Spring,Spring MVC,Spring Boot 三者比较](https://www.cnblogs.com/feng9exe/p/11266782.html) [Spring 與Spring Boot比較](https://medium.com/@wadegggg13/spring-%E8%88%87spring-boot%E6%AF%94%E8%BC%83-29b5f9f501d6) [Spring、SpringMVC和SpringBoot看这一篇就够了](https://cloud.tencent.com/developer/article/1665045) ###### tags: `Spring` `Spring MVC` `Spring boot`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up