You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ApplicationConversionService共享实例不可修改时如何添加自定义转换器

Spring Boot 2.5+ 自定义转换器添加方案

Spring Boot 2.5.0-RC1 开始ApplicationConversionService.getSharedInstance()返回的是不可修改的共享实例,禁止直接调用addConverter()等修改方法,可通过以下三种合规方式实现自定义转换器的注册:

  • 方式一:注册转换器Bean到Spring容器
    Spring Boot 会自动扫描所有Converter、GenericConverter、Formatter类型的Bean,自动注入到全局转换服务中,无需手动调用添加逻辑,是官方推荐的通用实现方式。
    示例代码:
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import java.util.Date;

// 注册为Spring Bean即可自动生效
@Component
public class CustomStringToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        // 实现自定义转换逻辑
        return new Date(Long.parseLong(source));
    }
}
  • 方式二:Web场景下通过MVC配置扩展
    如果是Web请求处理相关的转换器,可实现WebMvcConfigurer接口重写addFormatters方法注册:
    示例代码:
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        // 手动注册自定义转换器
        registry.addConverter(new CustomStringToDateConverter());
    }
}
  • 方式三:自定义局部转换服务实例
    如果仅需要在局部业务场景使用自定义转换服务,可自行创建可修改的ApplicationConversionService实例:
// 创建独立的可修改转换服务实例
ApplicationConversionService customConversionService = new ApplicationConversionService();
// 直接添加自定义转换器
customConversionService.addConverter(new CustomStringToDateConverter());

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:06:03