public interface HandlerMethodArgumentResolver {
//用于判定是否需要处理该参数分解,返回true为需要,并会去调用下面的方法
boolean supportsParameter(MethodParameter parameter);
//真正用于处理参数分解的方法,返回的Object就是controller方法上的形参对象
Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception;
}
详见:https://blog.csdn.net/Janson_Lin/article/details/102784134?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158572679319725222422640%2522%252C%2522scm%2522%253A%252220140713.130056874…%2522%257D&request_id=158572679319725222422640&biz_id=0&utm_source=distribute.pc_search_result.none-task
在秒杀场景中,有时候在列表页面需要获取用户信息,在商品详情页也要获取用户信息,就可以把获取用户信息的过程通过自定义参数解析,把过程封装在 resolveArgument()方法中,实现公共代码的抽取,这里就体现了面向对象编程的封装特性。