springboot和springmvc的區別
之前自己搭過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函式啟動即可。
相關文章
- springmvc和springboot的區別SpringMVCSpring Boot
- ssm springmvc springboot區別SSMSpringMVCSpring Boot
- spring、springmvc、springboot、springcloud 之間的聯絡和區別SpringMVCSpring BootGCCloud
- spring和springmvc的區別SpringMVC
- SpringCloud和SpringBoot的區別GCCloudSpring Boot
- SpringMVC(3)-request域和session域的作用和區別SpringMVCSession
- springboot和ssm開發的區別Spring BootSSM
- SpringMVC框架和Servlet開發有啥子區別(SpringMVC優勢)SpringMVC框架Servlet
- Spring和SpringBoot比較,解惑區別Spring Boot
- SpringBoot和Spring有什麼區別?Spring Boot
- 探索SpringBoot中的SpringMVCSpring BootSpringMVC
- SpringBoot的repackage和Maven打包命令之間的區別 - BaeldungSpring BootPackageMaven
- Sping、SpringMVC、SpringBoot的對比SpringMVCSpring Boot
- 從SpringBoot到SpringMVCSpring BootSpringMVC
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- mybatis、spring、springMVC、springboot的原始碼MyBatisSpringMVCSpring Boot原始碼
- SpringBoot | 4.1 SpringMVC的自動配置Spring BootSpringMVC
- ||和??的區別
- /*和/**的區別
- SpringBoot2.0 整合 springmvcSpring BootSpringMVC
- 簡述Spring容器與SpringMVC的容器的聯絡與區別SpringMVC
- 教你理清SpringBoot與SpringMVC的關係Spring BootSpringMVC
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- SpringBoot專案建立流程--SpringMVCSpring BootSpringMVC
- 和區別
- SDK和API的區別?API
- ArrayList和LinkedList的區別?
- button和submit的區別MIT
- MTV和MVC的區別MVC
- hadoop和spark的區別HadoopSpark
- rpop 和 brpop的區別