Spring MVC和Spring Boot的理解以及比較
Spring MVC是什麼?
(1)Spring MVC是Spring提供的一個強大而靈活的模組式web框架。通過Dispatcher Servlet, ModelAndView 和 View Resolver,開發web應用變得很容易。
(2)SpringMVC是一種基於Java的以請求為驅動型別的輕量級Web框架,其目的是將Web層進行解耦,即使用“請求-響應”模型,從工程結構上實現良好的分層,區分職責,簡化Web開發。藉助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡單。這些控制器一般不直接處理請求,而是將其委託給Spring上下文中的其他bean,通過Spring的依賴注入功能,這些bean被注入到控制器中。
(3)Spring框架最核心的就是所謂的依賴注射和控制反轉。完全解耦類之間的依賴關係,一個類如果要依賴什麼,那就是一個介面。至於如何實現這個介面,這都不重要了。只要拿到一個實現了這個介面的類,就可以輕鬆的通過xml配置檔案把實現類注射到呼叫介面的那個類裡。所有類之間的這種依賴關係就完全通過配置檔案的方式替代了。
SpringMVC的優點:
(1)使用簡單,學習成本低。
(2)很容易就可以寫出效能優秀的程式.
(3)靈活性強,Spring MVC的框架易擴充套件
SpringMVC的缺點:
(1)Spring與MVC 的Servlet API 耦合,難以脫離容器獨立執行
(2)太過於細分,開發效率低
(3)過度追求完美,有過度設計的危險
解決的問題領域是:網站應用程式或者服務開發——URL路由、Session、模板引擎、靜態Web資源等等。
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框架,那麼工作流程和SpringMVC的是完全一樣的,因為這部分工作是Spring MVC做的而不是Spring Boot。
Spring Boot的核心功能:
(1)獨立執行的Spring專案
Spring Boot可以以jar包的形式進行獨立的執行,使用:java -jar xx.jar 就可以成功的執行專案,或者在應用專案的主程式中執行main函式即可;
(2)內嵌的Servlet容器
內嵌容器,使得我們可以執行執行專案的主程式main函式,並讓專案的快速執行;
(3)提供starter簡化Manen配置
Spring Boot提供了一系列的starter pom用來簡化我們的Maven依賴
(4)自動配置Spring
Spring Boot會根據我們專案中類路徑的jar包/類,為jar包的類進行自動配置Bean,這樣一來就大大的簡化了我們的配置。當然,這只是Spring考慮到的大多數的使用場景,在一些特殊情況,我們還需要自定義自動配置;
(5)應用監控
Spring Boot提供了基於http、ssh、telnet對執行時的專案進行監控;
springboot 要解決的問題:
1.如何精簡配置;如何讓編碼、部署、監控變簡單;
2.如何方便的讓spring生態圈和其他工具鏈整合
優點:
對新手來說,無需任何門檻,只要懂Maven[的新手]會看文件就能亦步亦趨的開始一個新專案;
對高手來說,改配置也是分分鐘的事。另外fat jar的打包方式讓部署方式變得優雅。
缺點:
就是簡單的背後蘊藏了巨大的學習曲線。入門容易,但是如果沒有完整學習spring的體系,碰到問題就一臉懵逼。如果沒有一定的經驗,根本就不知道springboot自動做了什麼。
SpingMVC與SpringBoot的聯絡與區別:
聯絡:
Spring 最初利用“工廠模式”( DI )和“代理模式”( AOP )解耦應用元件。按照這種模式搞了一個 MVC 框架(一些用 Spring 解耦的元件),用開發 web 應用( SpringMVC )。後來發現每次開發都要搞很多依賴,寫很多樣板程式碼,使程式碼臃腫而麻煩,於是聰明的前人整理了一些懶人整合包( starter ),這套就是 Spring Boot 。
區別:
Spring MVC 是基於 Servlet 的一個 MVC框架 主要解決 WEB 開發的問題 但關於Spring 的配置比較 ;而Spring boot 的原則是:約定優於配置 ,可以極大地簡化了 spring 的配置流程。