Spring框架提供了多种类型转换器,用于在同数据类型之间进行转换。以下是Spring支持的一些常用转换器:

  1. StringToIntegerConverter:将字符串转换为整数类型。
  2. StringToDoubleConverter:将字符串转换为双精度浮点数类型。
  3. StringToDateConverter:将字符串转换为日期类型。
  4. StringToEnumConverter:将字符串转换为枚举类型。
  5. StringToArrayConverter:将字符串转换为数组类型。
  6. StringToCollectionConverter:将字符串转换为集合类型。

这些转换器可以通过在Spring配置文件中进行配置,或者使用注解方式进行声明和使用。Spring还支持自定义转换器,可以实现Converter接口或使用ConversionService进行自定义转换。
在Spring框架中,我们可以通过实现Converter接口或者GenericConverter接口来自定义类型转换器。

  1. 实现Converter接口:
  • 创建一个类,实现Converter<S, T>接口,其中S表示源类型,T表示目标类型。
  • 实现convert方法,该方法接收一个源类型的对象,并返回一个目标类型的对象。
  • 在Spring配置文件中注册自定义的类型转换器。
  1. 实现GenericConverter接口:
  • 创建一个类,实现GenericConverter接口。
  • 实现convert方法,该方法接收一个源类型的对象、源类型的元数据信息和目标类型的元数据信息,并返回一个目标类型的对象。
  • 在Spring配置文件中注册自定义的类型转换器。

下面是一个示例,演示如何使用自定义类型转换器将字符串转换为日期类型:

import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToDateConverter implements Converter<String, Date> {

    private final SimpleDateFormat dateFormat;

    public StringToDateConverter(String pattern) {
        this.dateFormat = new SimpleDateFormat(pattern);
    }

    @Override
    public Date convert(String source) {
        try {
            return dateFormat.parse(source);
        } catch (ParseException e) {
            throw new IllegalArgumentException("Invalid date format");
        }
    }
}

在Spring配置文件中注册自定义的类型转换器:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="com.example.StringToDateConverter">
                <constructor-arg value="yyyy-MM-dd" />
            </bean>
        </set>
    </property>
</bean>

这样,当Spring遇到需要将字符串转换为日期类型时,就会使用我们自定义的类型转换器进行转换。

Spring 定义了 3 种类型的转换器接口,实现任意一个转换 器接口都可以作为自定义转换器注册到 ConversionServiceFactroyBean 中:

– Converter<S,T>:将 S 类型对象转为 T 类型对象

– ConverterFactory:将相同系列多个 “同质” Converter 封装在一 起。如果希望将一种类型的对象转换为另一种类型及其子类的对 象(例如将 String 转换为 Number 及 Number 子类

(Integer、Long、Double 等)对象)可使用该转换器工厂类

– GenericConverter:会根据源类对象及目标类对象所在的宿主类

中的上下文信息进行类型转换

spring 参数转环境变量 spring类型转换器_类型转换