Просмотр исходного кода

配置全局对long类型的精度处理机制

车车 1 год назад
Родитель
Сommit
9e2e8947a1

+ 41 - 0
ktg-framework/src/main/java/com/ktg/framework/config/WebMvcConfig.java

@@ -0,0 +1,41 @@
+package com.ktg.framework.config;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.List;
+
+@Configuration
+@EnableWebMvc
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+        // 配置StringHttpMessageConverter(如果需要的话)
+        converters.add(new StringHttpMessageConverter());
+
+        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
+        builder.serializationInclusion(JsonInclude.Include.NON_NULL);
+        ObjectMapper objectMapper = builder.build();
+
+        SimpleModule simpleModule = new SimpleModule();
+        // 为Long类型注册ToStringSerializer,将其序列化为字符串
+        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
+        objectMapper.registerModule(simpleModule);
+
+        // 将配置好的ObjectMapper添加到MappingJackson2HttpMessageConverter中
+        converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
+
+        // 如果继承了其他WebMvcConfigurer实现类,可以调用super.configureMessageConverters(converters);
+        // 但在这个例子中,我们并没有继承其他实现类,所以不需要调用
+    }
+}