企業(yè)所得稅一般交多少谷歌廣告優(yōu)化師
文章目錄
- Spring MVC
- 什么是MVC模式
- Spring MVC優(yōu)點
- SpringMVC 運行流程
- SpringMVC組件
- SpringMVC常用的注解有哪些
- SpringMVC的攔截器和過濾器有什么區(qū)別?執(zhí)行順序是什么
- SpringBoot
- 對SpringBoot的理解
- Spring和SpringBoot的關系?
- SpringBoot有哪些核心注解
- SpringBoot的自動配置原理
- 為什么SpringBoot的可以直接運行
Spring MVC
Spring MVC :是基于spring的一個開源框架,實際上是spring的一個模塊,專門用來做web開發(fā)的。可以理解為Servlet的一個升級。所有的web開發(fā)底層都是Servlet,框架是在Servlet基礎上簡化開發(fā)并且加入一些功能。
web開發(fā)底層是Servlet,springMVC中有一個對象時Servlet:DispatherServlet(中央調度器),負責接收用戶的所有請求,用戶把請求給了DispatherServlet,之后DispatherServlet把請求轉發(fā)給我們的Controller(@Controller創(chuàng)建的對象)對象,最后是Controller對象處理請求。
什么是MVC模式
M——Model模型:完成業(yè)務邏輯,由JavaBean構成,service + dao+entity
V——view視圖:看到的頁面
C——Controller控制器:接收請求、調用模型
當一個請求發(fā)送過來之后,會先到到Controller控制層,控制層在交給Model模型層處理,Model層處理完成之后,返回處理結果給Controller層,在通過View視圖層渲染后相應給用戶。
Spring MVC優(yōu)點
- 基于MVC結構。分工明確,解耦合
- 容易理解,上手快,使用簡單
- 作為spring框架的一部分,方便整合Mybatis等其他框架。
- SpringMVC強化注解的使用。
SpringMVC 運行流程
-
前端發(fā)送過來的請求,先經過DispatcherServlet中央處理器也稱為前端控制器。
-
前端控制器DispatcherServlet接收請求后,調用映射處理器HandlerMapping。
HandlerMapping根據請求的URL找到處理該請求的Handler(即Controller),將處理器Handler返回給前端控制器。
-
前端控制器根據獲取到的Handler,選擇一臺合適的HandlerAdapter處理適配器,處理適配器調用處理器相應的處理方法。
-
Handler執(zhí)行后,向DispatcherServlet返回一個ModelAndView對象。
-
對返回的ModelAndView進行視圖解析,將View返回給DispatcherServlet。
-
View結合Model進行視圖渲染。
-
響應給客戶。
SpringMVC組件
- DispatcherServlet:Spring中提供了DispatcherServlet類,它從HTTPServlet繼承而來,他就是Spring MVC中的前端控制器。
- HandlerMapping:DispatcherServlet自己并不處理請求,而是將請求交給頁面控制器。那么在DispatcherServlet中如何選擇正確的頁面控制器呢?這件事就交給了HandlerMapping,進過HandlerMapping處理之后,DispatcherServlet就知道要調用哪個頁面處理器來處理了。
- HandlerAdapter:經過了HandlerMapping 處理之后,DispatcherServlet就獲取到了處理器,但是處理器有多種,為了方便調用,DispatcherServlet將這些處理器包裝成處理適配器HandlerAdapter,HandlerAdapter調用真正的處理器的功能處理方法,完成處理功能,并返回一個ModelAndView對象。
SpringMVC常用的注解有哪些
@RequestMapping:用于映射web請求,包括訪問路徑和參數
@RestController:該注解為一個組合注解,相當于@Controller和@ResponseBody的組合,注解在類上,意味著該Controller的所有方法都默認加了@ResponseBody。
@ResponseBody:支持將返回值放到response內,而不是一個頁面,通常用戶返回json數據。
@RequestBody:允許request的參數在request體內,而不是在直接連接的地址后面。
SpringMVC的攔截器和過濾器有什么區(qū)別?執(zhí)行順序是什么
過濾器是Servlet規(guī)范規(guī)定的對所有的web請求起作用,而攔截器只對action起作用;
過濾器依賴于Servlet容器,而攔截器不依賴于Servlet容器;
過濾器不能訪問容器中的Bean(DI)(基于Spring注冊過的過濾器也可以訪問容器中的Bean),而攔截器可以訪問
執(zhí)行順序:
SpringBoot
對SpringBoot的理解
SpringBoot是用來快速開發(fā)spring應用的腳手架,其設計目的是用來簡化spring應用的初始化搭建以及開發(fā)工程。
springBoot內置web服務器,省略了Web.xml,直接運行jar文件就可以啟動web應用;
SpringBoot幫我們管理了常用的第三方依賴版本,減少了版本沖突問題;
提供自動配置,對主流框架無配置集成,開箱即用。
Spring和SpringBoot的關系?
SpringBoot是Spring生態(tài)產品;
SpringBoot他不是一個框架,它是一個可以快速構件基于spring的腳手架,二者不是一個層面的東西,沒有可比性。
SpringBoot有哪些核心注解
@SpringBootApplication注解:這個注解標識了SpringBoot工程,寫在啟動類上
@SpringBootConfiguration:這個注解實際就是一個@Configuration,表示啟動類也是一個配置類
@EnableAutoConfiguration:啟動自動配置類的。自動掃描所有的自動配置類并啟動
SpringBoot的自動配置原理
- 通過@SpringBootConfiguration引入@EnableAutoConfiguration負責啟動自動配功能
- @EnableAutoConfiguration引入了@import
- Spring容易啟動時:加載IOC容器時會解析@Import注解
- @Import導入了一個deferredImportSelector,它會使SpringBoot的自動配置類的順序在最后,這樣方便擴展和覆蓋
- 然后讀取所有的/META-INF/spring.factories文件
- 過濾出所有AutoConfigurationClass類型的類
- 最后通過@Condition排除無效的自動配置類。
為什么SpringBoot的可以直接運行
- SpringBoot提供了一個插件spring-boot-maven-plugin用于把程序打包稱為一個可執(zhí)行的jar包;
- SpringBoot應用打包后生成一個Fat jar(包含jar包的jar),包含了應用依賴的jar和SpringBoot loader相關的類;
- 通過指令java - jar運行jar時會去找jar中的manifest文件,在那里面找到真正的啟動類(Main-Class);
- Fat jar的啟動Main函數是JarLauncher,找到manifest中的Start-Class