springboot HandlerMapping映射器处理原理(一)

主要内容:

        springboot如何通过HanlderMapping返回HandlerExecutionChain对象, HandlerExecutionChain对象里面封装了处理当前请求的具体handler(Object类型)和关联的拦截器

未涉及以下内容:

        1.如何自定义HandlerMapping以及处理程序适配器

        2.执行处理器时,springboot对方法参数的解析和对方法返回值的解析

先创建一个映射请求:

@RequestMapping(value = "/hello")
public String hello(){
    return "hello";
}

访问请求:

http://localhost:8080/hello

1. 在DispatcherServlet.doDispatch() debug

mappedHandler = getHandler(processedRequest); 用于获取当前请求的处理器handler

2. 进入getHandler(processedRequest)方法, 这个方法就在当前类中

可以看出是通过遍历该类中 this.handlerMappings 集合来寻找合适的 HandlerMapping, 当前集合中的值如下图所示:

这些都是 HandlerMapping接口 的实现类

HandlerMapping接口作用:

        用于定义请求和处理程序对象之间映射关系,也就是返回一个 HandlerExecutionChain 对象,如果返回为null,就表示该 HandlerMapping 不能找到请求的映射关系,就会继续遍历循环

3. 进入mapping.getHandler(request)

        可以看出第一个 handlerMapping 对象就是 RequestMappingHandlerMapping, handler表示具体的处理器, RequestMappingHandlerMapping返回的handler是HandlerMethod类型,里面封装了方法的相关信息

4. 进入getHandlerInternal(request)

/**
 * 查找给定
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring Boot中,你可以使用org.modelmapper依赖项来使用模型映射将DTO映射到实体对象,或者将实体对象映射到DTO对象。模型映射可以帮助你简化数据传输对象(DTO)和实体对象之间的数据转换。你可以通过以下步骤来使用模型映射: 1. 首先,在你的Spring Boot项目中添加org.modelmapper依赖项。 2. 确保你的实体类和DTO类之间有相对应的字段。 3. 在你的业务逻辑中,创建一个模型映射的实例。 4. 使用模型映射的map方法将实体对象映射到DTO对象,或者将DTO对象映射到实体对象。 举个例子,假设你有一个UserController类,其中包含一个GET请求的映射方法“/hello”:<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring Boot DTO 到实体映射](https://blog.csdn.net/allway2/article/details/127786785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [springboot HandlerMapping映射处理原理(一)](https://blog.csdn.net/Eaeyson/article/details/124936054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值