Skip to content

类型转换 - ConversionService

概述

ConversionService 提供了统一、可扩展的类型转换框架,解决类型转换的重复代码问题。

核心能力矩阵

能力核心类解决的问题使用频率学习优先级
类型转换ConversionService类型转换重复代码⭐⭐⭐⭐🟡 中

设计目标

  • 统一的类型转换接口
  • 可扩展的转换器注册机制
  • 支持泛型类型的转换
  • 内置常用类型转换器

核心架构

主要功能

1. 简单类型转换

java
ConversionService service = new DefaultConversionService();

// 基本类型转换
Integer num = service.convert("123", Integer.class);
Long longNum = service.convert("456", Long.class);
Boolean flag = service.convert("true", Boolean.class);

2. 集合类型转换

java
// 集合转换
List<String> list = service.convert("a,b,c", List.class);
Integer[] arr = service.convert(new String[]{"1", "2", "3"}, Integer[].class);

3. 自定义转换器

java
// 定义转换器
public class StringToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        return new SimpleDateFormat("yyyy-MM-dd").parse(source);
    }
}

// 注册转换器
DefaultConversionService service = new DefaultConversionService();
service.addConverter(new StringToDateConverter());

// 使用转换器
Date date = service.convert("2024-01-15", Date.class);

内置转换器

转换器源类型目标类型
StringToIntegerConverterStringInteger
StringToLongConverterStringLong
StringToBooleanConverterStringBoolean
StringToNumberConverterFactoryStringNumber
StringToCollectionConverterStringCollection
ArrayToCollectionConverterArrayCollection

使用场景

  • 数据绑定
  • 配置属性转换
  • 请求参数转换
  • 响应数据格式化

相关链接

基于 Apache 2.0 许可发布