{"id":14983080,"url":"https://github.com/silently9527/smartmvc","last_synced_at":"2025-10-27T18:31:43.857Z","repository":{"id":46512592,"uuid":"324167637","full_name":"silently9527/SmartMvc","owner":"silently9527","description":"深入解析SpringMVC核心原理：从手写简易版MVC框架开始(SmartMvc)","archived":false,"fork":false,"pushed_at":"2024-08-16T01:45:01.000Z","size":182,"stargazers_count":108,"open_issues_count":2,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-05T07:08:51.605Z","etag":null,"topics":["mvc","mvc-architecture","mvc-framework","springmvc"],"latest_commit_sha":null,"homepage":"https://herman7z.site","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/silently9527.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-24T13:55:23.000Z","updated_at":"2025-01-10T16:18:43.000Z","dependencies_parsed_at":"2024-09-24T11:01:55.242Z","dependency_job_id":"b7df4d03-af17-4dec-920f-178148c67b3d","html_url":"https://github.com/silently9527/SmartMvc","commit_stats":{"total_commits":34,"total_committers":1,"mean_commits":34.0,"dds":0.0,"last_synced_commit":"946eba5882dc87637921cc5b3955049e5c4054fd"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silently9527%2FSmartMvc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silently9527%2FSmartMvc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silently9527%2FSmartMvc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silently9527%2FSmartMvc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/silently9527","download_url":"https://codeload.github.com/silently9527/SmartMvc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238542282,"owners_count":19489559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mvc","mvc-architecture","mvc-framework","springmvc"],"created_at":"2024-09-24T14:06:42.782Z","updated_at":"2025-10-27T18:31:43.493Z","avatar_url":"https://github.com/silently9527.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://t.zsxq.com/h2EIR\" target=\"_blank\"\u003e\u003cimg alt=\"\" src=\"https://img.shields.io/badge/知识星球-Herman's Notes-red\u0026logoColor=FC5531\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#微信公众号\"\u003e\u003cimg src=\"https://img.shields.io/badge/公众号-贝塔学JAVA-blue.svg\" alt=\"公众号\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://juejin.cn/user/2779199782521693\"\u003e\u003cimg src=\"https://img.shields.io/badge/juejin-掘金-yellow.svg\" alt=\"掘金\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://blog.csdn.net/asdewq380303318\"\u003e\u003cimg src=\"https://img.shields.io/badge/csdn-CSDN-red.svg\" alt=\"CSDN\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://my.oschina.net/u/3230120\"\u003e\u003cimg src=\"https://img.shields.io/badge/oschina-开源中国-green\" alt=\"开源中国\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.zhihu.com/people/huaan9527-57/posts\"\u003e\u003cimg src=\"https://img.shields.io/badge/zhihu-知乎-purple\" alt=\"知乎\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# SmartMvc：手写简易版MVC框架\n\n#### 简介\nSpringMVC可以说的上是当前最优秀的MVC框架，采用了松散耦合可插拔组件结构，比其他MVC框架更具扩展性和灵活性；为了提高框架的扩展性和灵活性，\n设计了松耦合可插拔的组件。理解SpringMVC的原理，在面试或工作中都十分的重要。\n\nSpringMVC的原理在网络上到处都可以找得到，但是写的都很概括、零散；对应阅读源码经验较少的人来说，\n自己去看源码被很多细节所干扰阻碍，不能够很好的抽离出springMVC原理的主线；所以自己从手写简易版的SpringMVC框架出发，\n理出SpringMVC的主线并深入理解SpringMVC的原理\n\n\u003e **别忘记Star哟**\n\n#### 项目结构\n```\nSmartMvc\n├── docs -- 开发文档\n├── smart-mvc -- 实现mvc功能的核心代码\n├── smartmvc-springboot-autoconfigure -- SmartMvc的自动化配置\n├── smartmvc-springboot-demo -- SmartMvc的demo项目\n├── smartmvc-springboot-starter -- SmartMvc的starter\n└── spring-mvc-demo -- SpringMVC的demo\n```\n\n#### IDE、源码、依赖版本\n- JDK的版本1.8\n- 整个开发过程中我使用的IDE都是IDEA，可以根据读者自己习惯选择。当然我推荐是用IDEA\n- 开发SmartMVC我们需要使用到Spring，我使用的版本`5.2.9`\n- SmartMVC的源码地址：\n    1. Github： [https://github.com/silently9527/SmartMvc](https://github.com/silently9527/SmartMvc) \n    2. 码云：[https://gitee.com/silently9527/SmartMvc](https://gitee.com/silently9527/SmartMvc)\n\n\n#### 约定\n- 为了便于后期理解和使用SpringMVC，所以在SmartMVC中所有组件的名称都和SpringMVC的保持一致\n- 为了让SpringMVC的核心流程更加的清晰，减少读者的干扰，我拿出了自己18米的砍刀大胆的砍掉了SpringMVC中很多细节流程，\n达到去枝干立主脑，让读者能够更加顺畅的理解整个流转的过程\n\n\n#### 文档目录 [https://herman7z.site/Notes/No1MyProjects/](https://herman7z.site/Notes/No1MyProjects/)\n- 00 深入解析SpringMVC核心原理：从手写简易版MVC框架开始(SmartMvc)\n- 01 SmartMVC总体架构规划\n- 02 RequestMappingHandlerMapping初始化过程\n- 03 拦截器HandlerInterceptor\n- 04 HandlerMapping获取对应的Handler\n- 05 参数解析器HandlerMethodArgumentResolver\n- 06 返回解析器HandlerMethodReturnValueHandler\n- 07 Handler执行器InvocableHandlerMethod\n- 08 实现RequestMappingHandlerAdapter\n- 09 视图InternalResourceView、RedirectView\n- 10 视图解析器ViewResolver\n- 11 DispatcherServlet实现doDispatch来完成请求逻辑\n- 12 全局异常处理器HandlerExceptionResolver\n- 13 核心配置类WebMvcConfigurationSupport\n- 14 SmartMvc与SpringBoot集成(一)\n- 15 SmartMvc与SpringBoot集成(二)\n- 16 SmartMvc项目实战\n\n\n## 其他项目推荐\n* [前后端完全开源高颜值淘客APP](https://github.com/silently9527/coupons)\n* [Idea工具箱插件](https://github.com/silently9527/Toolkit)\n* [Java程序员自我学习的书单](https://github.com/silently9527/ProgrammerBooks)\n* [技术文章以及代码收录仓库](https://github.com/silently9527/ProgrammerNotes)\n\n\n### 博客地址\n[https://herman7z.site](https://herman7z.site)\n\n### 知识星球: [Herman's Notes](https://t.zsxq.com/h2EIR)\n欢迎加微信`silently9527`,免费加入知识星球\n\n![](https://raw.githubusercontent.com/silently9527/images/main/202408151725390.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsilently9527%2Fsmartmvc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsilently9527%2Fsmartmvc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsilently9527%2Fsmartmvc/lists"}