关于spring-mvc:深入解析SpringMVC核心原理从手写简易版MVC框架开始SmartMvc

6次阅读

共计 2081 个字符,预计需要花费 6 分钟才能阅读完成。

简介

SpringMVC 能够说的上是以后最优良的 MVC 框架,采纳了涣散耦合可插拔组件构造,比其余 MVC 框架更具扩展性和灵活性;为了进步框架的扩展性和灵活性,设计了松耦合可插拔的组件。了解 SpringMVC 的原理,在面试或工作中都非常的重要。

SpringMVC 的原理在网络上到处都能够找失去,然而写的都很概括、零散;对应浏览源码教训较少的小伙伴来说,
本人去看源码被很多细节所烦扰妨碍,不可能很好的抽离出 springMVC 原理的主线。

本人想和小伙伴一起从手写简易版的 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、源码、依赖版本

  • JDK 的版本 1.8
  • 整个开发过程中我应用的 IDE 都是 IDEA,能够依据读者本人习惯抉择。当然我举荐是用 IDEA
  • 开发 SmartMVC 咱们须要应用到 Spring,我应用的版本5.2.9
  • 整个框架曾经开发实现,SmartMVC 的源码地址:

    1. Github:https://github.com/silently9527/SmartMvc
    2. 码云:https://gitee.com/silently9527/SmartMvc

大家记得棘手给个 star 哦


约定

  • 为了便于前期了解和应用 SpringMVC,所以在 SmartMVC 中所有组件的名称都和 SpringMVC 的保持一致
  • 为了让 SpringMVC 的外围流程更加的清晰,缩小的烦扰,我拿出了本人 18 米的砍刀大胆的砍掉了 SpringMVC 中很多细节流程,达到去枝干立主脑,让咱们可能更加顺畅的了解申请的处理过程

文档目录

所有开发文档都在我的项目的 docs 目录下

  • 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);
    }
}

写到最初(点关注,不迷路)

在开发文档中可能会存在谬误或不足之处,欢送大家指出。

创作不易 ,心愿敌人们能够 点赞评论关注 三连

原文地址,转载请注明出处:https://silently9527.cn/archives/88

正文完
 0