在Spring Boot中,请求入参的类型转换通常是通过类型转换器(Converter)和格式化器(Formatter)来实现的。这两种机制都是用于将一个类型转换为另一个类型,但它们的实现方式略有不同。
类型转换器
用于将一个类型转换为另一个类型的通用机制。它可以将任何类型转换为任何其他类型,只需要提供相应的转换规则即可。在Spring Boot中,类型转换器通常实现Converter接口,并将其注册到Spring应用程序上下文中。当需要将某个类型转换为另一个类型时,Spring会自动选择合适的类型转换器进行转换。
格式化器
用于将一个类型转换为另一个类型的特殊机制。和类型转换器不同,格式化器通常只用于将字符串类型转换为其他类型,例如将字符串“2022-01-01”转换为日期类型。在Spring Boot中,格式化器通常实现Formatter接口,并将其注册到Spring应用程序上下文中。当需要将字符串类型转换为其他类型时,Spring会自动选择合适的格式化器进行转换。
自定义类型转换器
通常实现Converter接口,并实现其中的convert方法。该方法接受源类型的值并返回目标类型的值。
import org.springframework.core.convert.converter.Converter;
public class StringToEnumConverter<T extends Enum<T>> implements Converter<String, T> {
private final Class<T> targetType;
public StringToEnumConverter(Class<T> targetType) {
this.targetType = targetType;
}
@Override