fix[IHQOLK]:修复SpringBoot4 下Long精度丢失问题

This commit is contained in:
唐亚峰 | battcn
2026-03-27 09:26:04 +08:00
parent b193983e54
commit 3733291453

View File

@@ -81,9 +81,24 @@ public class DefaultWebMvcConfiguration implements WebMvcConfigurer {
}
/**
* 提供全局 ObjectMapper Bean
* Spring Boot 4 模块化了 Jackson 自动配置,手动提供并配置 ObjectMapper
* 配置与 JacksonUtils.createDefaultObjectMapper() 保持一致
* Spring Boot 4 正确做法:通过 JsonMapperBuilderCustomizer 定制 Jackson 3 的 JsonMapper
* 注册 Long→String 序列化器,防止前端 JavaScript 精度丢失
*/
@Bean
public org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer longToStringCustomizer() {
return builder -> {
tools.jackson.databind.module.SimpleModule longModule = new tools.jackson.databind.module.SimpleModule("LongToString");
longModule.addSerializer(Long.class, tools.jackson.databind.ser.std.ToStringSerializer.instance);
longModule.addSerializer(Long.TYPE, tools.jackson.databind.ser.std.ToStringSerializer.instance);
longModule.addSerializer(long.class, tools.jackson.databind.ser.std.ToStringSerializer.instance);
builder.addModule(longModule);
log.info(">>> Registered Long->String serializer via JsonMapperBuilderCustomizer (Jackson 3)");
};
}
/**
* 提供全局 Jackson 2 ObjectMapper Bean供非 HTTP 场景使用,如 JacksonUtils 等)
* HTTP 序列化已由上方 JsonMapperBuilderCustomizer 处理
*/
@Bean
@Primary