Spring Boot启动时未注册ConversionService转换器问题排查
问题根源
你的AddressConfig类中的configureAddressConverters只是一个普通自定义方法,Spring容器启动时不会自动识别并调用它,导致转换器根本没被注册到ConversionService中——这就是断点未触发、转换时抛出异常的核心原因。
两种解决方案
方案一:实现WebMvcConfigurer接口重写扩展方法
让配置类实现WebMvcConfigurer接口,并重写addFormatters方法(这是Spring MVC提供的格式化器/转换器注册扩展点):
@Configuration public class AddressConfig implements WebMvcConfigurer { @Override public void addFormatters(FormatterRegistry registry) { registry.addConverter(new AddressConverter()); registry.addConverter(new AddressDTOConverter()); } }
Spring启动时会自动调用所有WebMvcConfigurer实现类的addFormatters方法,你的转换器会被正常注册。
方案二:将转换器注册为Spring Bean
无需实现任何接口,直接在配置类中用@Bean注解声明转换器实例,Spring会自动检测并将这些Converter Bean注册到ConversionService:
@Configuration public class AddressConfig { @Bean public Converter<AddressDTO, AddressEntity> addressDTOConverter() { return new AddressDTOConverter(); } @Bean public AddressConverter addressConverter() { return new AddressConverter(); } }
这种方式更简洁,Spring会自动处理转换器的注册逻辑。
验证
重启项目后,之前设置的断点会正常触发,调用REST接口进行DTO到Entity的转换时,ConverterNotFoundException异常会消失。
内容的提问来源于stack exchange,提问作者hotmeatballsoup
相关产品推荐
相关产品推荐

