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()); } }
本文作者:primaryC
本文链接:https://www.cnblogs.com/cnff/p/17077230.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
框架 / spring-应用篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-03-07 Mysql 知识总结