HandlerMethodArgumentResolver 的用法

Spring Boot HandlerMethodArgumentResolver 使用和场景 为了将 HTTP 请求参数转换为 Java 对象,我们需要创建一个自定义的实现类。在这个类中,我们需要实现方法和方法。要在 Spring Boot 应用程序中使用自定义的实现类,我们需要将其注册到应用程序上下文中。为此,我们可以创建一个类,并实现接口。在这个类中,我们需要重写方法,并将自定义的实现类添加到参数解析器列表中。@Override要在 Spring Boot 应用程序中使用自定义的实现类,我们需要将其注册到应用程序上下文中。为此,我们可以创建一个类,并实现接口。在这个类中,我们需要重写。 阅读详情
public class TokenArgumentResolver implements HandlerMethodArgumentResolver {
    private static final Logger log = LoggerFactory.getLogger(TokenArgumentResolver.class);

    public TokenArgumentResolver() {
    }

    public boolean supportsParameter(MethodParameter methodParameter) {
        return methodParameter.getParameterType().equals(A.class);
    }

    public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) {
        return AuthUtil.getUser();
    }
}
    public boolean supportsParameter(MethodParameter methodParameter) {
        return methodParameter.getParameterType().equals(A.class);
    }


这个方法检查控制器方法的参数类型是否为A。如果是,返回true,表明这个自定义的HandlerMethodArgumentResolver能够处理这个参数。如果不是,返回false,意味着Spring MVC会继续查找下一个HandlerMethodArgumentResolver来处理这个参数。

public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) {
    return AuthUtil.getUser();
}

这个方法负责实际解析参数的逻辑。在这里,它简单地调用了AuthUtil.getUser()方法,假设这是一个全局的认证工具类,能够获取当前登录的用户信息。返回的结果将作为KeeperUser类型的参数值,直接传递给控制器方法。

这种类型的HandlerMethodArgumentResolver特别适用于需要频繁访问当前登录用户信息的场景。例如,你可能有多个控制器方法都需要访问用户的详细信息,如用户名、权限等级等。通过使用自定义的HandlerMethodArgumentResolver,你可以在方法签名中直接声明A类型的参数,而不需要每次手动调用AuthUtil.getUser()。

注册Resolver

为了使这个自定义的HandlerMethodArgumentResolver生效,你需要在Spring MVC的配置中注册它。这通常通过实现WebMvcConfigurer接口并重写addArgumentResolvers方法来完成:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        resolvers.add(new YourCustomResolver());
    }
}

SpringMVC源码总结(十)自定义HandlerMethodArgumentResolver NULL 博文链接:https://lgbolgger.iteye.com/blog/2111897 立即下载

相关推荐

HTML5网页基础设计——课程介绍专栏

案例: 参考代码: <!doctype html> <html> <head> <meta charset="utf-8"> <title>动手实践</title> <style> *{ margin: 0; padding: 0; font-size:14px; } dd{ width: 461px; height: 145px; margin: -4px; pad.

shengming_tutou的博客 4594

mvc模式中HandlerMethodArgumentResolver如何使用

Handler,Spring MVC中真正用于处理业务逻辑的类,即标注了@Controller注解的Controller类;Controller类中使用的@RequestMappinghandler相当于是平常业务代码中每个请求对应的的controller类以及方法信息.文章第一部分的debug截图对应起来更容易理解!handler来源分析项目启动过程中将所带有@RequestMapping注解的方法对应创建一个requestMappingInfo对象(存储注解中各属性信息);

zenzenzensex的博客 664

告别外置天线!手把手教你用HFSS仿真设计一个20x40mm的433MHz PCB蛇形天线

本文详细介绍了如何使用HFSS仿真工具设计一个20x40mm的433MHz PCB蛇形天线,解决物联网设备小型化中的天线集成难题。通过对比外置天线与PCB天线的性能差异,深入解析蛇形天线的电磁学原理,并提供从建模到优化的全流程实战指南,帮助工程师实现高效、低成本的微型化天线设计。

weixin_30606461的博客 431

HandlerMethodArgumentResolver用法

HandlerMethodArgumentResolver 是Spring MVC框架中的一个核心接口,它扮演着数据绑定和类型转换的重要角色,负责处理控制器方法参数的解析与注入。这一机制极大地增强了Spring框架处理HTTP请求的灵活性和便捷性,允许开发者自定义参数解析逻辑,以支持复杂类型、自定义注解或从请求中提取特定信息。

q1372302825的博客 4231

【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent

Simulink中便于搭建各类动力学与控制模型,通过将原有的控制器替换为AI控制器,可以方便使用已有模型,提供增量效果。 本节的重点是如何引入Simulink模型作为env,其他的内容在之前的文章中已有说明。 以水箱模型watertank为例,如下图所示: 采用PI控制器,控制效果如下所示: 将此PI控制器替换为神经网络控制器后,系统架构如下图所示: 具体替换策略如下所示: (1)删去PID控制器; (2)增加RL Agent模块; (3)观测器模块: 观测向量为:,其中...

bear_miao的博客 1万+

k8s 100个高频面试题

以下是 100 个 Kubernetes(k8s)高频面试题及其答案,涵盖了 Kubernetes 的核心概念、架构、组件、工作原理以及实际应用。答案:Master 节点组件:API Server:提供 RESTful API 接口,用于与集群交互。etcd:分布式键值存储,用于存储集群的配置数据和状态信息。Controller Manager:运行各种控制器进程,负责维护集群的状态。Scheduler:负责将 Pod 调度到合适的节点上运行。Worker 节点组件:Kubelet:运行在每个节点上的代理,

wankll的专栏 2780

HandlerMethodArgumentResolver的简单使用

相关api: 作用: SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上。 自定义一个参数解析器需要实现HandlerMethodArgumentResolver接口,重写supportsParameter和resolveArgument方法,配置文件中加入resolver配置。 如果需要多个解析器同时生效需要在一个解析器中对其他解析器做兼容...

fz13768884254的博客 5082

内网渗透—横向移动&IPC横移&Impacket套件&CS插件

以上便是IPC横移的知识。最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

2301_76227305的博客 1890

Spring参数解析器的使用-HandlerMethodArgumentResolver

Spring 参数解析器的简单使用-HandlerMethodArgumentResolver

燕少江湖 870

【保姆级教程】教你如何轻松获取MIMIC数据使用权限

文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。

越努力 越幸运 6600

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解

FRIGIDWINTER的博客 9405

HandlerMethodArgumentResolver简介

文章目录一、HandlerMethodArgumentResolver简介二、使用步骤(分析@PathVariable )1.自定义注解实现HandlerMethodArgumentResolver接口三、实战演练1.场景2.编写注解3.编写处理参数的类4.注册到spring mvc5.使用总结 一、HandlerMethodArgumentResolver简介 直接看源码 /** * 解析处理方法参数的类 */ public interface HandlerMethodArgumentResolv

sswltt的博客 2665

探索激光焊接光束质量诊断系统:原理、应用与前沿

激光焊接光束质量诊断系统是一套专门用于精确评估和监测激光焊接过程中光束特性的精密设备。它宛如一个精密的 “光束医生”,能够全方位地对激光光束进行 “体检”,为焊接工艺提供关键的数据支持。探测器:作为系统的 “感知触角”,探测器负责捕捉激光光束的各种信息,其性能直接影响着诊断的准确性。例如,常见的 CCD(电荷耦合器件)探测器和 CMOS(互补金属氧化物半导体)探测器,它们能够将光信号转化为电信号,具有高灵敏度、高分辨率等特点,可精确探测光束的强度分布、光斑位置等参数。光学透镜。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2583

Spring 源码学习(十四)—— HandlerMethodArgumentResolver

AbstractMessageConverterMethodArgumentResolver 类为将请求体解析为方法的基类;其只提供了一些请求体交互的方法而未提供任何 HandlerMethodArgumentResolver 接口方法的实现。AbstractNamedValueMethodArgumentResolver 为所有从各种"命名值"(named values)中解析控制器方法的参数值解析器通用父类;

weixin_63445802的博客 1338

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【SpringBoot】HandlerMethodArgumentResolver的简单使用

HandlerMethodArgumentResolver的简单使用 一、前言 现在项目有这样的一个需求,前端在请求头中传入userId,后端需要在controller中接收到此id的整个用户信息。 面对这样的需求,我们当然可以拿到userId后,在controller调用的service中请求数据库,从而拿到整个用户信息。不过这样重复的代码...

阳阳的博客 8192

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HandlerMethodArgumentResolver参数解析

被注解的方法就是一个请求处理器 handler,Spring MVC 会把该方法封装成 HandlerMethod 对象。HTTP 请求经过 RequestMappingInfo 条件匹配后最终路由到目标 HandlerMethod,接下来就是对目标方法的调用了。调用方法你得有参数吧,所以 Spring MVC 会先依赖 HandlerMethodArgumentResolverComposite 组件解析参数列表,再反射调用目标方法,本文重点参数的解析。

程序员小潘 1772

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

springboot自定义参数解析HandlerMethodArgumentResolver

HandlerMethodArgumentResolver HandlerMethodArgumentResolver根据自定义Annotation为指定的参数赋值,即可通过该resolver自定义接口参数 HandlerMethodArgumentResolver接口 public interface HandlerMethodArgumentResolver { /** * 设置条件判...

weixin_43738058的博客 522

Spring MVC中的HandlerMethodArgumentResolver

Spring MVC中的HandlerMethodArgumentResolver 什么是HandlerMethodArgumentResolver(处理器方法参数解析器)?它有什么用?这篇博客用于记录对HandlerMethodArgumentResolver的理解和用法。 什么是处理器方法参数解析器? 首先什么是Handler?我的理解是Spring MVC中真正用于处理业务逻辑的类,也就是常说的、标注了@Controller注解的Controller类;Controller类中使用@RequestMa

Cloud-Future的博客 2645

HandlerMethodArgumentResolver使用

最近学习了秒杀系统,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用 1.在aop中进行校验登录,校验成功后将会员信息保存到ThreadLocal,调用 UserContext.setUser(user)方法; UserContext 类: public class UserContext { private static ThreadLocal&l...

ergouy's blog 478

SpringMVC 之 HandlerMethodArgumentResolver接口

HandlerMethodArgumentResolver接口1. HandlerMethodArgumentResolver2. 自定义HandlerMethodArgumentResolver2.1 创建实体类2.2 创建标注注解2.3 创建HandlerMethodArgumentResolver类2.4 添加配置2.4.1使用springboot添加2.4.2传统springmvc项目添加...

雨后是冰雹 1048

使用HandlerMethodArgumentResolver给Controller注入会员信息

1、在aop中进行校验登录,校验成功后将会员信息保存到ThreadLocal,调用 UserContext.setUser(user)方法; UserContext 类: public class UserContext { private static ThreadLocal<User> userContext = new ThreadLocal<User&...

xxwd12的博客 1万+

HandlerMethodArgumentResolver的作用

在上一篇文章中使用到了HandlerMethodArgumentResolver,这里就给大家再详细讲一下HandlerMethodArgumentResolver。 SpringMvc中的HandlerAdapter会对Controller层方法的参数执行 HandlerMethodArgumentResolver(对参数的解析器)中的方法。 首先HandlerMethodArgumentR...

lebronchen的博客 4581

SpringMVC - @RequestJson之HandlerMethodArgumentResolver 从入门到青铜

JSON回顾,如果是新手,可以简单看看;如果老手勿喷,直接拉到下文从前言开始... JSON简介 在企业当中,我们都知道为了前后端分离统一,使用开发原则中的“约定大于配置”的原则,甚至团队开发规范、开发编译环境等等也是要大家约定来执行的,提高各自的开发效率。而其中一个特别重要的约定就是前端后端中间彼此传输的数据一般情况都推荐使用JSON格式数据,原因有以下几点: JAVAScript O...

2576

Springboot配置HandlerMethodArgumentResolver

一、SpringMVC配置自定义的HandlerMethodArgumentResolver的方式为:http://www.cnblogs.com/yangzhilong/p/6282218.html   二、Springboot中配置自定义HandlerMethodArgumentResolver 两种方法:     方法一:         1.在任意包中新建一个解析类    如下:...

一个很酷的人 3884

Spring HandlerMethodArgumentResolver接口

介绍 HandlerMethodArgumentResolver是用来为处理器解析参数的,主要用在HandlerMethod中,每个Resolver对应一种类型的参数,其实现类特别的多。 接口定义 supportsParameter 用于判断是否支持对某种参数的解析 resolveArgument 将请求中的参数值解析为某种对象 public interface HandlerM...

ai_xiangjuan的博客 339

HandlerMethodArgumentResolver笔记

提交请求前拦截特点注解 HandlerMethodArgumentResolver的使用 1.自定义注解 @Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CurrentUser { String value() default “name”; } 2...

风与蒲公英 259
上一篇: 【年周相关计算】
下一篇: 使用jsoup提取富文本url
WinkingJay
博客等级 码龄10年 820粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值