Converter学习

简介

在Spring框架中,Converter接口用于实现类型转换的功能。它定义了一个简单的方法,用于将一种类型的对象转换为另一种类型的对象。

源码

@FunctionalInterface
public interface Converter<S, T> {

	/**
	 * S:原类型
	 * T:目标类型
	 * 我们需要将S转换成T
	 */
	@Nullable
	T convert(S source);
}

private static class IntegerConverter implements Converter<String, Integer> {

		@Override
		public Integer convert(String source) {
			return Integer.parseInt(source);
		}
}

final class StringToUUIDConverter implements Converter<String, UUID> {

	@Override
	@Nullable
	public UUID convert(String source) {
		return (StringUtils.hasLength(source) ? UUID.fromString(source.trim()) : null);
	}

}

示例

要使用自定义的Converter,你需要将其注册到Spring容器中。可以通过以下方式之一进行注册:

使用@Component注解将自定义的Converter类标记为Spring组件,并在配置类中使用@EnableConversion注解启用类型转换支持。Spring会自动扫描并注册带有@Component注解的类。

@Component  
public class CustomConverter implements Converter<String, CustomType> {  
    @Override  
    public CustomType convert(String source) {  
        // 实现类型转换逻辑  
    }  
}  
  
@Configuration  
@EnableConversion  
public class AppConfig {  
    // 其他配置  
}

手动将自定义的Converter注册到ConversionService中。你可以通过实现ConversionService接口或使用DefaultConversionService类来创建ConversionService实例,并将自定义的Converter添加到其中。然后,你可以将ConversionService注入到其他组件中,以便进行类型转换。

@Configuration  
public class AppConfig {  
    @Bean  
    public ConversionService conversionService() {  
        DefaultConversionService conversionService = new DefaultConversionService();  
        conversionService.addConverter(new CustomConverter());  
        return conversionService;  
    }  
}

无论你选择哪种方式,Spring都会自动处理类型转换,并在需要时调用相应的Converter。你可以在方法参数上使用@Convert注解来指定要使用的Converter,或者在控制器方法中使用@RequestBody注解来自动进行JSON到Java对象的转换。

总之,Spring中的Converter接口提供了一种灵活的方式来实现自定义的类型转换,以满足应用程序的需求。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值