对于上述springmvc收集controller的过程中,有个细节我漏了,那就是controller里面对应的method如何收集,如何注册,以及里面的参数收集过程,这节我详细分析这里面的细节
收集controller的关键步骤
registerHandlerMethod(handler, invocableMethod, mapping);
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.MappingRegistry#register
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping#createHandlerMethod
org.springframework.web.method.HandlerMethod#initMethodParameters
private MethodParameter[] initMethodParameters() { int count = this.bridgedMethod.getParameterCount(); MethodParameter[] result = new MethodParameter[count]; for (int i = 0; i < count; i++) { result[i] = new HandlerMethodParameter(i); } return result; }
这样就把controller对应method里面的参数收集好了存放在result,调用该方法initMethodParameters即可
这个步骤后续带url参数解析会用到