首页 > 其他分享 >Springboot 转化器

Springboot 转化器

时间:2023-08-17 12:03:34浏览次数:44  
标签:targetType Springboot addConverter 转化 registry conversionService new public

Springboot 提供了很多转化器:

其中有ApplicationConversionService:extends FormattingConversionService。

	public static void addApplicationConverters(ConverterRegistry registry) {
		addDelimitedStringConverters(registry);
		registry.addConverter(new StringToDurationConverter());
		registry.addConverter(new DurationToStringConverter());
		registry.addConverter(new NumberToDurationConverter());
		registry.addConverter(new DurationToNumberConverter());
		registry.addConverter(new StringToPeriodConverter());
		registry.addConverter(new PeriodToStringConverter());
		registry.addConverter(new NumberToPeriodConverter());
		registry.addConverter(new StringToDataSizeConverter());
		registry.addConverter(new NumberToDataSizeConverter());
		registry.addConverter(new StringToFileConverter());
		registry.addConverter(new InputStreamSourceToByteArrayConverter());
		registry.addConverterFactory(new LenientStringToEnumConverterFactory());
		registry.addConverterFactory(new LenientBooleanToEnumConverterFactory());
		if (registry instanceof ConversionService conversionService) {
			addApplicationConverters(registry, conversionService);
		}
	}

	private static void addApplicationConverters(ConverterRegistry registry, ConversionService conversionService) {
		registry.addConverter(new CharSequenceToObjectConverter(conversionService));
	}

转化为一个数组为delimited String.

final class ArrayToDelimitedStringConverter implements ConditionalGenericConverter {

	private final CollectionToDelimitedStringConverter delegate;

	ArrayToDelimitedStringConverter(ConversionService conversionService) {
		this.delegate = new CollectionToDelimitedStringConverter(conversionService);
	}

	@Override
	public Set<ConvertiblePair> getConvertibleTypes() {
		return Collections.singleton(new ConvertiblePair(Object[].class, String.class));
	}

	@Override
	public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
		return this.delegate.matches(sourceType, targetType);
	}

	@Override
	public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
		List<Object> list = Arrays.asList(ObjectUtils.toObjectArray(source));
		return this.delegate.convert(list, sourceType, targetType);
	}

}

本质上就是各种数据类型之间的转化:

标签:targetType,Springboot,addConverter,转化,registry,conversionService,new,public
From: https://blog.51cto.com/u_15668812/7120277

相关文章

  • java springboot excel 上传
    spring.http.multipart.location=/data/server/upload/spring.http.multipart.max-file-size=2048MBspring.http.multipart.max-request-size=2048MBimportjava.io.File;importjavax.servlet.MultipartConfigElement;importorg.springframework.beans.factory.ann......
  • 基于SpringBoot的点餐系统的设计与实现-计算机毕业设计源码+LW文档
    摘要:随着移动互联网的快速发展,微信小程序作为一种轻量级、快速启动、无需下载安装的应用程序形式,在市场中越来越受欢迎。同时,餐饮行业也是一个充满机会的领域,尤其是在新冠疫情后,外卖、自取等模式逐渐成为餐饮行业的主要销售方式。因此,开发一款基于微信小程序的点餐系统,能够提高餐......
  • 基于springboot小区共享车位平台的设计与实现
    随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,小区共享车位平台就是信息时代变革中的产物之一。任何系统都要遵循系统设计的基本流程,本系......
  • SpringBoot3集成RocketMq
    标签:RocketMq5.Dashboard;一、简介RocketMQ因其架构简单、业务功能丰富、具备极强可扩展性等特点被广泛应用,比如金融业务、互联网、大数据、物联网等领域的业务场景;二、环境部署1、编译打包1、下载5.0版本源码包rocketmq-all-5.0.0-source-release.zip2、解压后进入目录,编......
  • SpringBoot3集成RocketMq
    标签:RocketMq5.Dashboard;一、简介RocketMQ因其架构简单、业务功能丰富、具备极强可扩展性等特点被广泛应用,比如金融业务、互联网、大数据、物联网等领域的业务场景;二、环境部署1、编译打包1、下载5.0版本源码包rocketmq-all-5.0.0-source-release.zip2、解压后进入目录,......
  • 一个新的springboot框架-COLA
    新来个技术总监,给公司项目引入了全新的业务架构,堪称最佳实践!(qq.com)......
  • 详谈 springboot整合shiro
    背景:上文学习了shrio基本概念后,本章将进一步的落地实践学习,在springboot中如何去整合shrio,整个过程步骤有个清晰的了解。 利用Shiro进行登录认证主要步骤:1.添加依赖:首先,在pom.xml文件中添加SpringBoot和Shiro的相关依赖。<!--SpringBoot--><dependency><groupI......
  • SpringBoot项目统一处理返回值和异常
    目录简介前期准备统一封装报文统一异常处理自定义异常信息简介当使用SpringBoot开发Web项目的API时,为了与前端更好地通信,通常会约定好接口的响应格式。例如,以下是一个JSON格式的响应,通过返回码和返回信息告知前端具体的操作结果或错误信息。如果操作成功,前端可以通过"data"字段......
  • SpringBoot3.x 启动 refresh 过程解析
    Spring容器创建后,会调用它的refresh方法,refresh的时候会做很多事情:如完成配置类解析、各种BeanFactoryPostProcessor和BeanPostProcessor的注册、国际化配置的初始化、web内置容器的构造等等。web程序对应Spring容器为AnnotationConfigServletWebServerApplicationContext。Servlet......
  • 将memo转化为JPG输出
    units1;interfaceuses Windows,Messages,SysUtils,Graphics,Controls,Forms,StdCtrls, Classes;type TForm1=class(TForm) Button1:TButton; Memo1:TMemo; procedureButton1Click(Sender:TObject); private {Privatedeclarations} public {Publicdecla......