利用 spring mvc HandlerMethodArgumentResolver自定义参数解析

本文详细介绍如何在SpringMVC中实现自定义参数绑定功能,通过实现HandlerMethodArgumentResolver接口,针对UserInfo类型参数进行自动填充,展示springboot集成示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用过springmvc 都知道使用 requestParam requestBody 等注解,即可轻松帮我们绑定相应参数。那么如果我们自己需要实现一个参数绑定功能,如何做呢?spring mvc 提供了一个HandlerMethodArgumentResolver 接口,实现2个方法即可搞定。

public boolean supportsParameter(MethodParameter parameter) 此方法返回一个boolean 若为true 则进解析填充值,可在此方法检测某个class 是否存在或 指定注解是否存在判断是否需要解析填充值

public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)
解析返回值
写个demo吧 若方法存在UserInfo类型参数,则自动填充。

public class UserInfoMethodArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        //parameter.hasParameterAnnotation(xx.class);
        return parameter.getParameterType().equals(UserInfo.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        //HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
        String token = webRequest.getHeader(Constant.TOKEN);
        if(StringUtils.isNotBlank(token)) {
            return RedisUtils.getUserInfo(token);
        }
        return null;
    }
}

spring boot 方式集成

@Configuration
public class MyArgumentResolverAutosConfiguration extends WebMvcConfigurerAdapter {
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(new UserInfoMethodArgumentResolver());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值