springmvc request参数类转换,举例:
@GetMapping("/userAccountByPage")
@PreAuthorize("@pms.hasPermission('admin_sysuser_view')")
public Result userAccountByPage(Page<UserAccountQo> page, UserAccountQo enter) {
return Result.success(userAccountService.userAccountByPage(page, enter));
}
源码分析过程如下:
InvocableHandlerMethod-->nvokeAndHandle(ServletWebRequest webRequest, ModelAndViewContainer mavContainer,Object... providedArgs)
-->invokeForRequest(NativeWebRequest request, @Nullable ModelAndViewContainer mavContainer,Object... providedArgs)
-->getMethodArgumentValues(request, mavContainer, providedArgs)
-->args[i] = this.resolvers.resolveArgument(parameter, mavContainer, request, this.dataBinderFactory);
-->return resolver.resolveArgument(parameter, mavContainer, webRequest, binderFactory);
-->跳到下个类
ModelAttributeMethodProcessor-->bindRequestParameters(binder, webRequest);-->跳到下个类
ServletModelAttributeMethodProcessor-->bindRequestParameters(WebDataBinder binder, NativeWebRequest request)
-->servletBinder.bind(servletRequest);
-->doBind(mpvs);
-->applyPropertyValues(mpvs);-->跳到下个类
DataBinder-->getPropertyAccessor().setPropertyValues(mpvs, isIgnoreUnknownFields(), isIgnoreInvalidFields());-->跳到下个类
AbstractPropertyAccessor-->setPropertyValues(PropertyValues pvs, boolean ignoreUnknown, boolean ignoreInvalid)给当前类的属性赋值,不是属性的参数忽略掉