干货!详解Spring Boot中各种场景下的类型转换

文摘   2024-11-03 10:00   新疆  

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

环境:SpringBoot3.2.5



1. 简介

在Spring项目开发中,类型转换(Type Conversion)是一项核心功能,它允许开发者在不同数据类型之间灵活地进行转换,从而简化了开发过程并提高了代码的可读性和健壮性。Spring提供了丰富的类型转换机制(能满足绝大多数的应用),主要通过ConversionService接口实现,该接口定义了类型转换的基本方法。Spring框架内部广泛使用ConversionService来处理各种类型的转换需求,例如从字符串转换为日期、数字等基本类型,以及复杂的对象之间的转换。

下面给出2个比较常见的应用场景:

  • 表单提交与数据绑定

    在Web应用中,用户通过表单提交的数据通常是字符串形式。Spring MVC利用ConversionService 自动将这些字符串转换为目标对象的属性值,如日期、数字或其他复杂类型,使得控制器层能够直接操作业务对象,而无需手动进行类型转换。

  • 配置属性解析

    Spring Boot应用中,可以通过 @ConfigurationProperties 注解将外部配置文件中的属性值绑定到Java Bean中。此时,ConversionService 负责将配置文件中的字符串值转换为Bean属性的实际类型,支持自定义转换器的注册,增强了配置的灵活性。

     

接下来,我们将通过下面几方面来讲解基于Spring Boot开发环境下,在不同应用场景下的类型转换的应用。

  1. Controller接口参数类型的转换

    在 Spring 中,Controller 接口参数的处理方式多种多样,不同的参数类型可能需要不同的类型转换方式。通过本小节的学习,你将深入了解如何在 Controller 中使用不同类型转换器,从而更好地处理各种请求参数。

  2. 配置数据使用@Value绑定是的类型转换

    在大多数情况下,Spring 内置的类型转换器能够满足我们的需求,可以直接将配置文件中的属性值绑定到 Java Bean 的字段上。然而,当遇到复杂的属性类型时,内置转换器可能无法满足需求。这时,可以通过自定义类型转换器来解决这些问题,确保配置数据能够正确地绑定到目标字段。

  3. 通过@ConfigurationProperties定义配置的类型转换

    使用 @ConfigurationProperties 注解可以非常方便地将配置文件中带有特定前缀的所有属性绑定到 Java Bean 的属性上。然而,当你需要绑定复杂类型的数据时,内置的类型转换器可能不够用。在这种情况下,必须通过自定义类型转换器来处理个性化属性,确保配置数据能够正确地映射到 Java Bean 的属性中。


2. 实战案例

2.1 Controller接口参数类型转换

现在有如下的接口,只接收一个Date类型的参数

@GetMapping("/c1")public Date c1(Date date) {  return date ;}

默认情况下,访问该接口后报错,如下错误:

这是由于Spring底层并没有从String转换到Date类型的转换器。

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