Spring MVC 中自定义参数解析器
前段时间看开源项目看到一段奇怪的代码
| 1 | 
 | 
可以发现 loginUser直接就通过函数的参数传递了。
Spring MVC解析参数是通过 org.springframework.web.method.support.InvocableHandlerMethod#getMethodArgumentValues实现的
| 1 | private Object[] getMethodArgumentValues(NativeWebRequest request, ModelAndViewContainer mavContainer, Object... providedArgs) throws Exception { | 
而 org.springframework.web.method.support.InvocableHandlerMethod#getMethodArgumentValues将具体的解析交给了 argumentResolvers,argumentResolvers是一个实现了 HandlerMethodArgumentResolver接口的对象。
| 1 | public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgumentResolver { | 
org.springframework.web.method.support.HandlerMethodArgumentResolverComposite#argumentResolvers 中存在一些我们熟悉的argumentResolver。

我们可以通过实现自己的解析器来实现文中最先提到的效果。
| 1 | public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { | 
注意:这里要先在interceptor中设置
LOGIN_USER_KEY属性