# 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.