深刻解析SpringMVC核心原理:從手寫簡易版MVC框架開始(SmartMvc)

簡介

SpringMVC能夠說的上是當前最優秀的MVC框架,採用了鬆散耦合可插拔組件結構,比其餘MVC框架更具擴展性和靈活性;爲了提升框架的擴展性和靈活性,設計了鬆耦合可插拔的組件。理解SpringMVC的原理,在面試或工做中都十分的重要。git

SpringMVC的原理在網絡上處處均可以找獲得,可是寫的都很歸納、零散;對應閱讀源碼經驗較少的小夥伴來講,
本身去看源碼被不少細節所幹擾阻礙,不可以很好的抽離出springMVC原理的主線。github

本身想和小夥伴一塊兒從手寫簡易版的SmartMVC框架出發,理出SpringMVC的主線並深刻理解SpringMVC的原理。框架代碼開發加上文檔編寫大概花費時間一個月面試


項目結構

SmartMvc
├── docs -- 開發文檔
├── smart-mvc -- 實現mvc功能的核心代碼
├── smartmvc-springboot-autoconfigure -- SmartMvc的自動化配置
├── smartmvc-springboot-demo -- SmartMvc的demo項目
├── smartmvc-springboot-starter -- SmartMvc的starter
└── spring-mvc-demo -- SpringMVC的demo

IDE、源碼、依賴版本

你們記得順手給個star哦spring


約定

  • 爲了便於後期理解和使用SpringMVC,因此在SmartMVC中全部組件的名稱都和SpringMVC的保持一致
  • 爲了讓SpringMVC的核心流程更加的清晰,減小的干擾,我拿出了本身18米的砍刀大膽的砍掉了SpringMVC中不少細節流程,達到去枝幹立主腦,讓咱們可以更加順暢的理解請求的處理過程

文檔目錄

全部開發文檔都在項目的docs目錄下spring-mvc

  • 01 SmartMVC整體架構規劃
  • 02 RequestMappingHandlerMapping初始化過程
  • 03 攔截器HandlerInterceptor
  • 04 HandlerMapping獲取對應的Handler
  • 05 參數解析器HandlerMethodArgumentResolver
  • 06 返回解析器HandlerMethodReturnValueHandler
  • 07 Handler執行器InvocableHandlerMethod
  • 08 實現RequestMappingHandlerAdapter
  • 09 視圖InternalResourceView、RedirectView
  • 10 視圖解析器ViewResolver
  • 11 DispatcherServlet實現doDispatch來完成請求邏輯
  • 12 全局異常處理器HandlerExceptionResolver
  • 13 核心配置類WebMvcConfigurationSupport
  • 14 SmartMvc與SpringBoot集成(一)
  • 15 SmartMvc與SpringBoot集成(二)
  • 16 SmartMvc項目實戰

SpringBoot項目中引入SmartMVC的步驟

1. 新建一個SpringBoot項目,在pom.xml中加入SmartMVC的starter

<dependency>
    <groupId>com.silently9527</groupId>
    <artifactId>smartmvc-springboot-starter</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

2. 修改SpringBoot生成的啓動類,指定SmartMVC的ApplicationContextClass

@SpringBootApplication
public class SmartmvcSpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(SmartmvcSpringbootDemoApplication.class);
        application.setApplicationContextClass(ServletWebServerApplicationContext.class);
        application.run(args);
    }
}

寫到最後(點關注,不迷路)

在開發文檔中可能會存在錯誤或不足之處,歡迎你們指出。springboot

創做不易,但願朋友們能夠點贊評論關注三連網絡

原文地址,轉載請註明出處:https://silently9527.cn/archives/88架構

相關文章
相關標籤/搜索