大数跨境
0
0

太实用了!自定义@PackParam,请求参数万能处理器

太实用了!自定义@PackParam,请求参数万能处理器 Spring全家桶实战案例
2025-06-26
0
导读:太实用了!自定义@PackParam,请求参数万能处理器
Spring Boot 3实战案例锦集PDF电子书已更新至130篇!
图片

🎉🎉《Spring Boot实战案例合集》目前已更新137个案例,我们将持续不断的更新。文末有电子书目录。

💪💪永久更新承诺

我们郑重承诺,所有订阅合集的粉丝都将享受永久免费的后续更新服务

💌💌如何获取
订阅我们的合集点我订阅,并通过私信联系我们,我们将第一时间将电子书发送给您。

→ 现在就订阅合集

环境:SpringBoot3.4.2



1. 简介

在 Spring Boot 开发中,通过自定义 @PackParam 注解,我们为 GET 请求参数处理打造出强大功能,该功能具备高度灵活性与出色扩展性。该注解不仅能标注参数,还能配置自定义处理器,无论是数据解密、格式转换,还是复杂业务逻辑预处理,皆可轻松实现。通过为参数配置不同的处理器类,我们能让请求参数在进入业务逻辑前,就按需完成各类定制化处理。

如下是最终的效果:

@GetMapping("/s")public String s(@PackParam String id) {  return id ;}@GetMapping("/query")public String query(@PackParam(processor = DecryptProcessor.classString id) {  return id ;}// 组合注解的应用(这里我们就省去了定义processor属性配置)@GetMapping("/search")public String search(@DecryptParam String id) {  return id ;}
  • /s:获取参数id,不会对请求的原始值做任何的处理

  • /query:获取参数id,但是会通过 DecryptProcessor 处理器进行处理后,才最终的返回结果

  • /search:该接口参数我们使用了组合注解,如果需要相同处理的参数比较多,每个都去配置processor属性非常麻烦,所以我们还支持定义这种组合的注解(内部还是使用@PackParam)

接下来,我们将详细的介绍 @PackParam 底层的实现原理。

2.实战案例

2.1 自定义注解

@Target({ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME)public @interface PackParam {    /**请求参数名称*/  String name() default "";  /**参数是否必须*/  boolean required() default true;  /**默认值;支持SpEL表达式*/  String defaultValue() default ValueConstants.DEFAULT_NONE;  /**参数处理器; 当配置了该处理器后,会对接收到的值进行处理*/  Class<? extends ParamProcessor> processor() default ParamProcessor.class ;}

该注解与 @RequestParam 注解的功能基本类似,只是我们再次基础上添加了额外的处理功能。

接下来,将要实现的是针对该注解的解析器了。

【声明】内容源于网络
0
0
Spring全家桶实战案例
Java全栈开发,前端Vue2/3全家桶;Spring, SpringBoot 2/3, Spring Cloud各种实战案例及源码解读
内容 832
粉丝 0
Spring全家桶实战案例 Java全栈开发,前端Vue2/3全家桶;Spring, SpringBoot 2/3, Spring Cloud各种实战案例及源码解读
总阅读38
粉丝0
内容832