spring 自定义参数解析器处理下划线参数转驼峰

先引入一篇博客: https://www.cnblogs.com/java-zhao/p/9119258.html

关于处理使用@requstBody注解后自定义参数解析器,失败,原因是spring会使用自己默认的参数解析器来处理参数解析,上面这篇博客涉及了参数解析器的顺序

因此大部门都是采用自定义注解来实现的

 

我的业务场景:  

     对接第三方平台,别人调用我的接口,但是接口文档参数已经定好位有下划线的参数,觉得不规范,但是别人又不好修改,采用自定义注解+参数解析器来讲下划线的参数名称,转为驼峰命名参数接收

 

 

RequestMappingHandlerAdapter 中查看默认的参数解析器

 

 

 

 

通用自定义参数解析类,实现 HandlerMethodArgumentResolver 接口,同时交给spring回调,来实现目的

package com.wm.resolverstudy1.config;

import com.alibaba.fastjson.JSONObject;
import com.wm.resolverstudy1.annotation.RequestPropertiesBody;
import org.springframework.core.MethodParameter;
import org.springframework.objenesis.instantiator.util.ClassUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import sun.reflect.misc.FieldUtil;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;


/**
 * @author 半卷流年
 * @date 2020-8-13 10:28
 */
public class RequestModelArgumentResolver implements HandlerMethodArgumentResolver {

    private final Pattern underLinePattern = Pattern.compile("_(\\w)");

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
       return parameter.hasParameterAnnotation(RequestPropertiesBody.class);
    }

    @Override
    public Object resolveArgument(MethodParameter 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值