Spring Boot自定义注解玩转Controller接口参数任意转换

文摘   2024-10-21 20:00   新疆  

最新实战案例锦集:《Spring Boot3实战案例合集》持续更新,每天至少更新一篇文章,订阅后将赠送文章最后展示的所有MD文档(学习笔记)。

环境:Spring Boot3.2.5



1. 简介

在Web开发中,控制器(Controller)是处理客户端请求的关键组件之一。通常情况下,开发者会面临从HTTP请求中提取复杂类型数据的需求,比如将查询字符串或请求体中的内容自动转换为Java对象。然而,标准的数据绑定机制可能不足以满足所有场景下的需求,特别是在需要进行特殊逻辑处理或格式转换时。本文将通过实例讲解了如何创建自定义注解,并结合Spring框架提供的HandlerMethodArgumentResolver接口来扩展Spring MVC的功能,从而允许开发者以更加灵活和高效的方式处理传入的请求参数。这不仅提升了代码的可维护性和复用性,还使得接口设计更加简洁、直观。掌握这一技巧对于提升Web应用的灵活性和响应速度有着重要意义。

本篇文章中,如下2种形式的数据转换:

转换一

@GetMapping("")public Person index(@SPack Person person)

请求参数:?person=pack,66 将自动将该参数值转换为Person对象。

转换二

@GetMapping("fmt")public String fmt(@FPack("${pack.order.format}") String sno)

请求参数:?sno=66 将会得到配置属性pack.order.format指定格式的数据,如:配置的格式为:%06d输出结果为:000066;不足6位的自动实用0补齐。

接下来,我将一步一步的完成上面介绍的功能。

2. 实战案例

2.1 自定义注解

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)public @interface SPack {  String value() default "" ;}

该注解只能应用于方法参数上,并且参数类型必须是Person

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)public @interface FPack {  String value() default "" ;}

该注解用来标准String类型的参数,并且可以指定value属性,用于指定你需要的格式。

Spring全家桶实战案例源码
spring, springboot, springcloud 案例开发详解
 最新文章