我是靠谱客的博主 健忘老师,最近开发中收集的这篇文章主要介绍Spring mvc源码之HandlerMethodArgumentResolver自定义参数解析器主要实现类,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 自定义参数解析器
- 自定义注解
- 自定义解释器实现
- 使用
- 主要实现类
- AbstractMessageConverterMethodArgumentResolver
- AbstractMessageConverterMethodProcessor
- HttpEntityMethodProcessor
HandlerMethodArgumentResolver 类实现的主要功能是,将 HttpServletRequest(header + body 中的内容)解析为HandlerMethod方法的参数
自定义参数解析器
自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface CustomerArgument {
String name() default "";
}
自定义解释器实现
public class MyArgumentsResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
// 是否支持当前参数
return parameter.hasParameterAnnotation(CustomerArgument .class);
}
/**
* 解析参数
*/
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
//具体的解析逻辑
return null;
}
}
使用
@RequestMapping(value = "getAccountByOpen")
@ResponseBody
public String getAccountByOpenId(@CustomerArgument String arg) {
return arg;
}
主要实现类
RequestParamMapMethodArgumentResolver | 处理@RequestParam |
---|---|
RequestHeaderMapMethodArgumentResolver | 处理@RequestHeader |
PathVariableMapMethodArgumentResolver处理 | @PathVariable |
ModelAttributeMethodProcessor | 处理@ModelAttribute |
RequestResponseBodyMethodProcessor | 处理@RequestBody |
AbstractMessageConverterMethodArgumentResolver
AbstractMessageConverterMethodArgumentResolver引入了HttpMessageConverter,即转换的工作有这些HttpMessageConverter来完成具体的转换和判断由子类来实现。
public abstract class AbstractMessageConverterMethodArgumentResolver implements HandlerMethodArgumentResolver {
protected final Log logger = LogFactory.getLog(getClass());
protected final List<HttpMessageConverter<?>> messageConverters;
protected final List<MediaType> allSupportedMediaTypes;
//略
}
AbstractMessageConverterMethodProcessor
AbstractMessageConverterMethodProcessor继承AbstractMessageConverterMethodArgumentResolver仅仅是加入了对响应数据进行转换的支持。
HttpEntityMethodProcessor
HttpEntityMethodProcessor继承AbstractMessageConverterMethodProcessor,支持请求和响应的转换
最后
以上就是健忘老师为你收集整理的Spring mvc源码之HandlerMethodArgumentResolver自定义参数解析器主要实现类的全部内容,希望文章能够帮你解决Spring mvc源码之HandlerMethodArgumentResolver自定义参数解析器主要实现类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复