1,参数解析器介绍
HandlerMehtodArgumentResolver ,中文成为方法参数解析器,是 SpringMvc 组件的众多解析器之一,主要用来对 Controller 的方法参数进行处理。
2,参数解析器的使用
1,实现 HandlerMethodArgumentResolver,自定义解析器
public class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
/**
* 判断 Controller 层中的参数,返回 true 则执行 resolveArgument(),返回 false 则跳过
* */
@Override
public boolean supportsParameter(MethodParameter parameter) {
return true;
}
/**
* 用于处理一些业务,将返回值赋值给Controller层中的这个参数。
* */
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
System.out.println("获取到参数类型:" + parameter.getParameterType().getName());
//获取 request, 获取参数值
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
String parameterValue = request.getParameter(parameter.getParameterName());
System.out.println("获取到参数值:" + parameterValue);
return "经过了参数解析器:" + parameterValue;
}
}
方法:
supportsParameter():检查是否需要进行参数解析
resolveArgument():将方法参数解析为给定请求的参数值
参数:
MethodParameter parameter: 要解析的方法参数对象,可以从对象获取参数的属性(如参数的类型,所修饰的注解等)
ModelAndViewContainer mavContainer: 当前请求的 ModelAndViewContainer 容器
NativeWebRequest webRequest: 当前的请求实体
WebDataBinderFactory binderFactory: 实例创建工厂
2,配置类中注册自定义参数解析器
@Configuration
public class DefaultWebMvcConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new MyHandlerMethodArgumentResolver());
}
}
标签:解析器,spring,参数,resolveArgument,HandlerMethodArgumentResolver,parameter,public
From: https://www.cnblogs.com/cnff/p/17077230.html