1.一个接口的执行流程
@GetMapping("/list")
@Operation(summary = "获取菜单列表", description = "用于【菜单管理】界面")
@PreAuthorize("@ss.hasPermission('system:menu:query')")
public CommonResult<List<MenuRespVO>> getMenuList(MenuListReqVO reqVO) {
List<MenuDO> list = menuService.getMenuList(reqVO);
list.sort(Comparator.comparing(MenuDO::getSort));
return success(BeanUtils.toBean(list, MenuRespVO.class));
}
1.请求发送(HTTP 请求)
假设有一个 HTTP 请求访问 /list
路径,方法是 GET
,请求的 URL 类似于 http://example.com/list
。
2.Spring MVC 接收到请求:
Spring Boot 的 @RestController
或 @Controller
会接收到这个请求,并通过 @GetMapping("/list")
注解来匹配这个请求,找到对应的 getMenuList
方法。
3.方法入口:
当请求到达 getMenuList
方法时,Spring 会将请求中的参数绑定到 MenuListReqVO
对象(例如:reqVO
)。如果请求中有参数(如分页信息、过滤条件等),Spring 会根据请求的参数自动映射到 MenuListReqVO
类的字段。
例如,假设请求 URL 是 http://example.com/list?page=1&size=10
,那么 reqVO
对象会被填充为:
MenuListReqVO reqVO = new MenuListReqVO(); reqVO.setPage(1); reqVO.setSize(10);