Spring核心——数据的类型转换

本文探讨了Spring框架如何通过Converter和ConverterFactory实现对象间的类型转换。Converter接口用于单一类型的转换,而ConverterFactory则用于批量处理相同类别数据的转换。Spring内置的ConversionService提供了丰富的Java类型转换支持,并可通过XML或@Configuration配置启用,广泛应用于Spring MVC的全局类型转换。
摘要由CSDN通过智能技术生成

字符串到实体转换一文中介绍了Spring核心框架中使用PropertyEditor将任何字符串转换为数字、实体的方法。除了字符串到实体,Spring还提供了更加通用的功能在对象和对象之间进行数据转换。

Converter<S, T>

Spring的类型转换的基础是Converter<S, T>(以下简称转换器)接口:

package org.springframework.core.convert.converter;
public interface Converter<S, T> {
    T convert(S source);
}

光是看他的结构就很清晰的明白这个接口是要做什么。S表示Source(来源)、T表示Target(目标),所以这个接口的2个范型参数就是数据从S转换为T,Converter::convert方法正是输入一个“S”类型的实例,返回一个“T”类型的实例。

可以通过这个接口实现规范化、可复用的类型转换功能。下面通过转换器实现字符串到PC实体类相互转换的过程。

Pc实体:

public class PC extends Device {
	String cpu;
	String graphic;
	String ram;
    //Getter & Setter ...
}

在基类Device中通过反射实现字符串到实体类的转换:

public abstract class Device {
	public void pares(String text){ //字符串转换为实体
		Field[] fields = this.getClass().getDeclaredFields();
		for (Field field : fields) {
			int begIndex = text.indexOf(field.getName());
			int endIndex = text.indexOf(";", begIndex);
			String sub = text.substring(begIndex, endIndex), value = sub.split("=")[1];
			field.setAccessible(true);
		    field.set(this, value);
		}
	};

	public String value(){ //实体转换为字符串
		Field[] fields = this.getClass().getDeclaredFields();
		StringBuilder sb = new StringBuilder();
		for (Field field : fields) {
			sb.append(field.getName());
			sb.append("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值