springboot和springmvc的區別

iPwisdom發表於2020-12-13

之前自己搭過springboot的相關專案,但是如何進行比較,從自我感覺來看就是使用springboot用起來幾乎沒有配置,個人搭的專案沒有用到配置相關的內容。於是我就用了這個回答給面試官,可想而知,這種回答並不好。於是現在百度了相關文章,就把理解寫成部落格當做筆記。

    springmvc從兩個方面來看,一是spring,spring的核心中IOC和AOP,IOC就是控制反轉(就是將原本由程式程式碼直接操作的物件的呼叫權交給容器),目的是為了減低計算機程式碼的耦合度,所謂的耦合度就是程式碼中的邏輯關係不要太緊密,避免後面改的人會因為不懂業務邏輯導致改錯程式碼;除此之外也避免我們每次建立新的物件,減少對應的程式碼量。我們實際程式碼過程中最常見的方式是依賴注入(DI Dependency Injection),所謂依賴注入就是通過構造注入或者set進行注入。依賴查詢(DL Dependency Lookup)這是通過名稱和型別查詢bean。AOP是面向切面程式設計,AOP分為五大部分:(1)Aspect(切面):通常是一個類,裡面可以定義切入點和通知。(2)JointPoint(連線點):程式執行中明確的點,一般是方法的呼叫。(3)Advice(通知):AOP在特定的切入點上做出的增強處理,有before,after,afterRunning,afterThrowing,around;(4)Pointcut(切入點):就是帶有通知的連線點,在程式中主要體現為書寫切入點表示式;(5)AOP代理:AOP框架建立的物件,代理就是目標物件的加強,Spring的AOP可以使用JDK代理,也可以使用CGLIB代理,前者基於介面,後者是基於子類。

通知型別:

(1)Before:在目標方法被呼叫之前做增強處理,@Before只需要指定切入點表示式即可

(2)AfterReturning:在目標方法正常完成後做增強,@AfterReturning除了指定切入點表示式後,還可以指定一個返回值形參名returning,代表目標方法的返回值

(3)AfterThrowing:主要用來處理程式中未處理的異常,@AfterThrowing除了指定切入點表示式後,還可以指定一個throwing的返回值形參名,可以通過該形參名

來訪問目標方法中所丟擲的異常物件

(4)After:在目標方法完成之後做增強,無論目標方法時候成功完成。@After可以指定一個切入點表示式

(5)Around:環繞通知,在目標方法完成前後做增強處理,環繞通知是最重要的通知型別,像事務,日誌等都是環繞通知,注意程式設計中核心是一個ProceedingJoinPoint

    springboot引入自動配置的概念,讓專案配置變得更容易,Spring Boot本身並不提供Spring框架的核心特性以及擴充套件功能,只是用於快速、敏捷地開發新一代基於Spring框架的應用程式。也就是說,它並不是用來替代Spring的解決方案,而是和Spring框架緊密結合用於提升Spring開發者體驗的工具。同時它整合了大量常用的第三方庫配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot應用中這些第三方庫幾乎可以零配置的開箱即用(out-of-the-box),大部分的SpringBoot應用都只需要非常少量的配置程式碼,開發者能夠更加專注於業務邏輯。Spring Boot只是承載者,輔助開發者簡化專案搭建過程的。如果承載的是WEB專案,使用Spring MVC作為MVC框架,那麼工作流程和SpringMVC的是完全一樣的,因為這部分工作是Spring MVC做的而不是Spring Boot。

    springmvc與springboot的聯絡和區別:

    聯絡:

     Spring最初利用工廠模式(DI)和代理模式解耦應用元件,為了解耦開發了springmvc;而實際開發過程中,經常會使用到註解,程式的樣板很多,於是開發了starter,這套就是springboot。

    區別:

   1.springboot是約定大於配置,可以簡化spring的配置流程;springmvc是基於servlet的mvc框架,個人感覺少了model中的對映。

   2.以前web應用要使用到tomat伺服器啟動,而springboot內建伺服器容器,通過@SpringBootApplication中註解類中main函式啟動即可。

相關文章