1. 程式人生 > >SpringBoot 和 SpringMVC區別

SpringBoot 和 SpringMVC區別

轉CSDN 原文:https://blog.csdn.net/u014590757/article/details/79602309?utm_source=copy 

spring boot只是一個配置工具,整合工具,輔助工具.

對工具的理解,因為用SpringBoot構建的專案,最顯著的感受就是,原來的很多配置,沒有了,開發一個“Hello SpirngBoot!!!”的web測試程式會變得異常簡單,只是多了很多註解!其實核心就是自動配置,很多我們原來要配置的東西,框架本生已經幫我們在底層配置好了,並且加了很多條件,當然我們也可以定製裡面的很多配置,實現更高的擴充套件性!

springmvc是框架,專案中實際執行的程式碼 Spring 框架就像一個家族,有眾多衍生產品例如 Springboot、Springsecurity、JPA、SpringCloud、SpringData等等。但他們的基礎都是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應用都只需要非常少量的配置程式碼,開發者能夠更加專注於業務邏輯。

springboot執行原理

入口註解@SpringBootApplication註解是一個組合註解,它包含@configuration、@EnableAutoConfiguration和@componentScan三個註解組成。它的核心是@EnableAutoConfiguration註解。這個註解中有一個@Import註解,它匯入配置功能EnableAutoConfigurationImportSelector,這個類有個方法掃描具有/META-INF/spring.factories檔案的jar。spring.factories中聲明瞭哪些自動配置。然後我們在application.properties檔案中進行相應的配置,比如資料庫連線,使springboot中的自動配置中的引數是我們需要的配置

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

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