HandlerMethodArgumentResolver 参数解析器
HandlerMethodArgumentResolver 接口信息
package org.springframework.web.method.support;
public interface HandlerMethodArgumentResolver {
boolean supportsParameter(MethodParameter parameter);
@Nullable
Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception;
}
使用举例
实现 HandlerMethodArgumentResolver
@Component
public class MyMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
return methodParameter.hasParameterAnnotation(MyAnnotation.class);
}
@Override
public User resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
String token = request.getHeader("token");
return UserUtils.getUserBytoken(token);
}
}
配置 HandlerMethodArgumentResolver(配置用法)
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{
@Autowired
MyMethodArgumentResolver myMethodArgumentResolver;
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(userArgumentResolver);
}
}
在contractor中使用解析器(配置用法)
@RequestMapping("/userInfo")
public Result select(User user) {
return Result.success(JSON.toJSONString(user));
}
在contractor中使用解析器(注解用法)
@RequestMapping("/userInfo")
public Result select(@MyAnnotation User user) {
return Result.success(JSON.toJSONString(user));
}