🎉🎉《Spring Boot实战案例合集》目前已更新137个案例,我们将持续不断的更新。文末有电子书目录。
💪💪永久更新承诺
我们郑重承诺,所有订阅合集的粉丝都将享受永久免费的后续更新服务。
💌💌如何获取
订阅我们的合集《点我订阅》,并通过私信联系我们,我们将第一时间将电子书发送给您。
环境:SpringBoot3.4.2
1. 简介
在 Spring Boot 开发中,通过自定义 @PackParam 注解,我们为 GET 请求参数处理打造出强大功能,该功能具备高度灵活性与出色扩展性。该注解不仅能标注参数,还能配置自定义处理器,无论是数据解密、格式转换,还是复杂业务逻辑预处理,皆可轻松实现。通过为参数配置不同的处理器类,我们能让请求参数在进入业务逻辑前,就按需完成各类定制化处理。
如下是最终的效果:
("/s")public String s( String id) {return id ;}("/query")public String query((processor = DecryptProcessor.class) String id) {return id ;}// 组合注解的应用(这里我们就省去了定义processor属性配置)("/search")public String search( String id) {return id ;}
/s:获取参数id,不会对请求的原始值做任何的处理
/query:获取参数id,但是会通过 DecryptProcessor 处理器进行处理后,才最终的返回结果
/search:该接口参数我们使用了组合注解,如果需要相同处理的参数比较多,每个都去配置processor属性非常麻烦,所以我们还支持定义这种组合的注解(内部还是使用@PackParam)
接下来,我们将详细的介绍 @PackParam 底层的实现原理。
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 注解的功能基本类似,只是我们再次基础上添加了额外的处理功能。
接下来,将要实现的是针对该注解的解析器了。


