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());
    }
}
posted @ 2024-03-07 16:06  primaryC  阅读(212)  评论(0编辑  收藏  举报