spring-HandlerMethodArgumentResolver-参数解析器

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());
}
}

本文作者:primaryC

本文链接:https://www.cnblogs.com/cnff/p/17077230.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   primaryC  阅读(324)  评论(0编辑  收藏  举报
历史上的今天:
2023-03-07 Mysql 知识总结
点击右上角即可分享
微信分享提示
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.