HandlerMethodArgumentResolver

org.springframework.web.method.support.HandlerMethodArgumentResolver org.springframework.web.method.support.HandlerMethodArgumentResolverComposite

org.springframework.web.method.support.InvocableHandlerMethod#invokeForRequest

@Nullable
public Object invokeForRequest(NativeWebRequest request, @Nullable ModelAndViewContainer mavContainer,
		Object... providedArgs) throws Exception {
	/**
	 * 拿到对应方法的参数值
	 */
	Object[] args = getMethodArgumentValues(request, mavContainer, providedArgs);
	if (logger.isTraceEnabled()) {
		logger.trace("Arguments: " + Arrays.toString(args));
	}
 
	Class<?>[] groups = getValidationGroups();
	if (shouldValidateArguments() && this.methodValidator != null) {
		this.methodValidator.applyArgumentValidation(
				getBean(), getBridgedMethod(), getMethodParameters(), args, groups);
	}
	/**
	 * 有参数值之后, 最终调用 Controller 的目标方法
	 */
	Object returnValue = doInvoke(args);
	if (shouldValidateReturnValue() && this.methodValidator != null) {
		this.methodValidator.applyReturnValueValidation(
				getBean(), getBridgedMethod(), getReturnType(), returnValue, groups);
	}
 
	return returnValue;
}