简介
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的源码地址:
- Github: https://github.com/silently9527/SmartMvc
- 码云: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
@SpringBootApplicationpublic 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