Explorar el Código

移动json.databind到common

rayson hace 6 meses
padre
commit
0571a0e37a

+ 1 - 1
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/core/databind/NumberSerializer.java → citu-framework/citu-common/src/main/java/com/citu/framework/common/util/json/databind/NumberSerializer.java

@@ -1,4 +1,4 @@
-package com.citu.framework.jackson.core.databind;
+package com.citu.framework.common.util.json.databind;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.SerializerProvider;

+ 1 - 1
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/core/databind/TimestampLocalDateTimeDeserializer.java → citu-framework/citu-common/src/main/java/com/citu/framework/common/util/json/databind/TimestampLocalDateTimeDeserializer.java

@@ -1,4 +1,4 @@
-package com.citu.framework.jackson.core.databind;
+package com.citu.framework.common.util.json.databind;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.DeserializationContext;

+ 1 - 1
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/core/databind/TimestampLocalDateTimeSerializer.java → citu-framework/citu-common/src/main/java/com/citu/framework/common/util/json/databind/TimestampLocalDateTimeSerializer.java

@@ -1,4 +1,4 @@
-package com.citu.framework.jackson.core.databind;
+package com.citu.framework.common.util.json.databind;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.JsonSerializer;

+ 3 - 4
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/config/CituJacksonAutoConfiguration.java

@@ -2,12 +2,11 @@ package com.citu.framework.jackson.config;
 
 import cn.hutool.core.collection.CollUtil;
 import com.citu.framework.common.util.json.JsonUtils;
-import com.citu.framework.jackson.core.databind.NumberSerializer;
-import com.citu.framework.jackson.core.databind.TimestampLocalDateTimeDeserializer;
-import com.citu.framework.jackson.core.databind.TimestampLocalDateTimeSerializer;
+import com.citu.framework.common.util.json.databind.NumberSerializer;
+import com.citu.framework.common.util.json.databind.TimestampLocalDateTimeDeserializer;
+import com.citu.framework.common.util.json.databind.TimestampLocalDateTimeSerializer;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;

+ 0 - 6
citu-gateway/pom.xml

@@ -17,12 +17,6 @@
 
     <dependencies>
         <!-- Spring Cloud 基础 -->
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
-        </dependency>
-
-        <!-- 业务组件 -->
         <dependency>
             <groupId>com.citu</groupId>
             <artifactId>citu-module-system-api</artifactId>

+ 51 - 0
citu-gateway/src/main/java/com/citu/gateway/jackson/JacksonAutoConfiguration.java

@@ -0,0 +1,51 @@
+package com.citu.gateway.jackson;
+
+import cn.hutool.core.collection.CollUtil;
+import com.citu.framework.common.util.json.JsonUtils;
+import com.citu.framework.common.util.json.databind.NumberSerializer;
+import com.citu.framework.common.util.json.databind.TimestampLocalDateTimeDeserializer;
+import com.citu.framework.common.util.json.databind.TimestampLocalDateTimeSerializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+
+@Configuration
+@Slf4j
+public class JacksonAutoConfiguration {
+
+    @Bean
+    public JsonUtils jsonUtils(List<ObjectMapper> objectMappers) {
+        // 1.1 创建 SimpleModule 对象
+        SimpleModule simpleModule = new SimpleModule();
+        simpleModule
+                // 新增 Long 类型序列化规则,数值超过 2^53-1,在 JS 会出现精度丢失问题,因此 Long 自动序列化为字符串类型
+                .addSerializer(Long.class, NumberSerializer.INSTANCE)
+                .addSerializer(Long.TYPE, NumberSerializer.INSTANCE)
+                .addSerializer(LocalDate.class, LocalDateSerializer.INSTANCE)
+                .addDeserializer(LocalDate.class, LocalDateDeserializer.INSTANCE)
+                .addSerializer(LocalTime.class, LocalTimeSerializer.INSTANCE)
+                .addDeserializer(LocalTime.class, LocalTimeDeserializer.INSTANCE)
+                // 新增 LocalDateTime 序列化、反序列化规则,使用 Long 时间戳
+                .addSerializer(LocalDateTime.class, TimestampLocalDateTimeSerializer.INSTANCE)
+                .addDeserializer(LocalDateTime.class, TimestampLocalDateTimeDeserializer.INSTANCE);
+        // 1.2 注册到 objectMapper
+        objectMappers.forEach(objectMapper -> objectMapper.registerModule(simpleModule));
+
+        // 2. 设置 objectMapper 到 JsonUtils
+        JsonUtils.init(CollUtil.getFirst(objectMappers));
+        log.info("[init][初始化 JsonUtils 成功]");
+        return new JsonUtils();
+    }
+
+}