由于之前用@RequestParam无法接收request payload 正文格式为json格式的字符串,只能使用@RequestBody整个接收,觉得麻烦,但是spring自带的参数解析器不具有这种功能,只能尝试着用自定义参数解析器去解决。
自定义解析器需要实现HandlerMethodArgumentResolver接口,HandlerMethodArgumentResolver接口包含两个接口:这里写图片描述
接口说明:
supportsParameter:用于判定是否需要处理该参数分解,返回true为需要,并会去调用下面的方法resolveArgument。
resolveArgument:真正用于处理参数分解的方法,返回的Object就是controller方法上的形参对象。
1、自定义注解
package com.manqian.crm.resolver;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonParam {
String value();
boolean required() default true;
String defaultValue() default "";
}
若不想自定义注解,可以直接在实现HandlerMethodArgumentResolver的supportsParameter直接返回true
2、自定义参数解析器,实现HandlerMethodArgume
springMvc(实现HandlerMethodArgumentResolver)自定义参数解析器
最新推荐文章于 2024-05-18 08:29:32 发布