Spring-18 SpringMvc 核心实现思路
Spring 源码系列文章会遵循由浅入深,由易到难,由宏观到微观的原则,目标是尽量降低学习难度,而不是一上来就迷失在源码当中. 文章会从一个场景作为出发点,针对性的目的性极强的针对该场景对 Spring 的实现原理,源码进行探究学习。该系列文章会让你收获什么? 从对 Spring 的使用者成为 Spring 专家。该文章会同步在微信公众号 【DevXJava】, 方便在微信客户端阅读。
@Controller
public class Controller1 {
private static Logger LOG = LoggerFactory.getLogger(Controller1.class);
@GetMapping("/test1")
public ModelAndView test1() {
LOG.info("test1()");
return null;
}
@PostMapping("/test2")
public ModelAndView test2(@RequestParam("name") String name) {
LOG.info("test2({})" , name);
return null;
}
@PutMapping("/test3")
public ModelAndView test3(@Token String token) {
LOG.info("test3({})" , token);
return null;
}
@RequestMapping("/test4")
@Yml
public User test4(@Token String token) {
LOG.info("test4()");
return new User("张三" , 18);
}
}
Spring MVC 核心思路
Spring Mvc 最核心的两个功能,请求的映射和信息的转换,将 Http 协议与 Java 方法之间建立起映射关系。在请求时将 HTTP 协议信息转换为 Java 对象,在返回时将 Java 对象转换为 HTTP 协议信息。
该图只是对 Spring MVC 整体的一个高度抽象,为的是帮助读者简介明了的对 Spring MVC 的核心设计思路有个全局的了解,原理其实都很简单只不过实现起来要干很多的脏活累活并且运用很多的技巧和设计,后续的文章中会深入细节进行探究,下面先大致了解下 Spring MVC 中的核心组件。
Spring MVC 核心组件
Spring MVC 的核心组件包括以下几个部分:
-
DispatcherServlet:它是整个 Spring MVC 的核心控制器,负责接收所有的客户端请求并将其分发给合适的处理程序进行处理。它还负责管理其他组件,如处理程序映射器、视图解析器等。
-
处理程序映射器(Handler Mapping):处理程序映射器负责将请求映射到合适的处理程序(控制器)上。它根据请求的 URL、请求参数或其他标识符来确定要调用的处理程序。
-
处理程序(Handler):处理程序是实际处理请求的组件,也称为控制器。它们接收请求并执行所需的业务逻辑。处理程序可以是任何普通的 Java 类,通过使用注解或实现特定的接口来标识为处理程序。
-
处理程序适配器(Handler Adapter):处理程序适配器负责将请求委派给正确的处理程序,并协调处理程序的执行。它将处理程序的执行结果封装为一个 ModelAndView 对象,该对象包含要渲染的视图和模型数据。
-
视图解析器(View Resolver):视图解析器负责将逻辑视图名称解析为实际的视图实现。它可以根据不同的策略来解析视图,例如根据视图名称查找特定的 JSP 文件或使用模板引擎生成动态内容。
-
视图(View):视图负责渲染处理程序的执行结果,并将其呈现给客户端。它可以是一个 JSP 页面、一个 HTML 模板文件或任何其他类型的视图。
DevX
会持续分享有趣的技术和见闻,如果你觉得本文对你有帮助希望你可以分享给更多的朋友看到。该文章会同步在微信公众号 【DevXJava】, 方便在微信客户端阅读。