Spring Controller参数自定义注入,实现传递用户信息或者任意参数

这篇具有很好参考价值的文章主要介绍了Spring Controller参数自定义注入,实现传递用户信息或者任意参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目中需要将用户对象传递给需要的每一个请求,及注解中支持spel 的字段可以解析到对应信息。

redisson实现的分布式锁、限流、防重提交,依赖即可使用的注解工具,项目开源,可以了解一下

@RestController
public class HelloController {

    @RequestMapping("/")
    @RedissonLock(key="#user.id")
    public String index(User user) {
        return user.getName();
    }

}

public class User {
    private String name;
}

网上文章大多介绍 使用自定义注解、 HandlerInterceptor 或者 ThreadLocal,不优雅 且繁琐。

解决方案:

HandlerMethodArgumentResolver 是Spring框架中的自定义参数解析接口,可实现对Controller方法参数的自定义注入。

创建user参数解析器:

public class UserArgumentResolver implements HandlerMethodArgumentResolver {

	//supportsParameter 指定当参数类型为 User 类时才应用该参数解析器
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterType().equals(User.class);
    }

	//自定义的参数解析逻辑,例如创建一个 User 对象并返回
    @Override
  public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
       
        // 例如,从请求中获取用户信息
        // User user =  WebUtils.getUser().......
        // 创建 User 对象
        User user = new User();
        user.setId("1");
        user.setUsername("张三");
        return user;
    }
}

自定义的参数解析器 注册到 Spring MVC 中:


@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        resolvers.add(new UserArgumentResolver());
    }
}
//测试
@RestController
@RequestMapping("hello")
public class HelloController {
	@GetMapping
	@RepeatSubmit(value="custom",param = "#user.id")
	public String get(User user){
		System.out.println(user.getName());
	    return "userID: "+user.getId();
	}
}

日志输出:
张三

在 WebFlex中使用:

一七年夏:
WebFlex 要把 “WebMvcConfigurer” 换成 “WebFluxConfigurer”,“addArgumentResolvers” 换成 “configureArgumentResolvers”,其他的都一样。文章来源地址https://www.toymoban.com/news/detail-534751.html

到了这里,关于Spring Controller参数自定义注入,实现传递用户信息或者任意参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 中 Controller 接口参数注解全攻略与实战案例详解

    在 Spring Boot 应用程序中,Controller 是 MVC 架构模式中的核心组件之一,负责处理 HTTP 请求并返回响应结果。为了更好地映射请求、解析请求参数、执行业务逻辑和生成视图或 JSON 数据,Controller 中广泛使用了各种注解。本文将全面梳理 Spring Boot 中 Controller 接口所使用的各类注

    2024年04月24日
    浏览(39)
  • 3.5 Spring MVC参数传递

    Spring MVC的Controller接收请求参数的方式有多种,本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式,同时解决POST请求中文乱码问题。 基本数据类型以及他们的包装类。 JSON格式采用键值对的方式来表示数据,由花括号 {} 包含对

    2024年02月13日
    浏览(45)
  • 案例13 Spring MVC参数传递案例

    基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。 选择Maven快速构建web项目,项目名称为case13-springmvc02。 ​ src.main路径下,执行new – Directory操作,选择java、resources后,执行回车键。 ​ 在web.xml中配置DispatcherServlet。 src.main.java.

    2024年02月13日
    浏览(51)
  • 【JavaEE进阶】 Spring请求如何传递参数详解

    访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收. 下面博主会对传递参数进行一个详解,咱们主要是使⽤浏览器和Postman来模拟 比如博主写了以下程序 当我们运行后,用浏览

    2024年02月03日
    浏览(52)
  • Spring MVC学习随笔-控制器(Controller)开发详解:接受客户端(Client)请求参数

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 💡 1. 接受客户端(client)请求参数[讲解]2. 调用业务对象3. 页面跳转 所谓简单变量:指的就是8种基本类型+String这些类型的变量。把这些类型的变量,作为控制器方法的形参,用于接受

    2024年02月05日
    浏览(54)
  • 【Java EE】Spring请求如何传递参数详解

    访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收. 下面博主会对传递参数进行一个详解,咱们主要是使⽤浏览器和Postman来模拟 当我们运行后,用浏览器进行访问 http://127.0.

    2024年04月12日
    浏览(51)
  • 优雅地处理参数传递:Spring Boot中的技巧

    目录 一:四种传参方式 1.1:在 URL 中传递参数 1.2:PathVariable 传递参数(Restful 风格) 1.3:在请求体中传递参数 1.4:在请求头中传递参数  二:文件上传接口测试  2.1 : test.java  三、@RequestParam 3.1 多个参数  3.2 单个参数  四、@PathVariable 4.1  单个参数  4.2  多个参数 五、@

    2024年02月05日
    浏览(54)
  • Spring MVC 参数传递和JSON数据处理

    编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据: @RequestBody:作用是接收前端aja

    2024年01月24日
    浏览(51)
  • Spring Boot框架中Controller层API接口如何支持使用多个@RequestBody注解接受请求体参数

    众所周知,在Spring Boot框架中,Controller层API接口编码获取请求体参数时,在参数上会使用@RequestBody注解;如果一次请求中,请求体参数携带的内容需要用多个参数接收时,能不能多次使用@RequestBody注解呢? 下面我们先测试一下,参考代码: PostMan进行请求: 服务端后端日志:

    2024年01月17日
    浏览(55)
  • spring boot项目同时传递参数和文件的多种方式

    在开发接口中,遇到了需要同时接收参数和文件的情况,可以有多种方式实现文件+参数的接收,这里基于spring boot 3 + vue 3 + axios,做一个简单的代码演示。 参数较少时,比较方便,直接参数接受即可 1.1 后端接口 1.2 前端请求 fileAndSimpleParam 为封装的api请求方法,可查看下文的

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包