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
属性