Browse Source

1.mgr 模型中的 ObjectMapper 在 BeanConfig.java 中统一提供
2.删除 mgr 模块中的 JsonUtils.java

reghao 1 month ago
parent
commit
9d19b9e8ad

+ 1 - 1
agent/pom.xml

@@ -26,7 +26,7 @@
         <dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <artifactId>jackson-databind</artifactId>
-            <version>2.15.2</version>
+            <version>2.15.3</version>
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
 
 

+ 11 - 1
common/pom.xml

@@ -38,7 +38,17 @@
         <dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <artifactId>jackson-databind</artifactId>
-            <version>2.15.2</version>
+            <version>2.15.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jdk8</artifactId>
+            <version>2.15.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.15.3</version>
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
 </project>
 </project>

+ 21 - 1
common/src/main/java/cn/reghao/devops/common/util/JsonUtils.java

@@ -4,7 +4,12 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+
 import java.io.IOException;
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
 /**
  * @author reghao
  * @author reghao
@@ -13,12 +18,18 @@ import java.io.IOException;
 public class JsonUtils {
 public class JsonUtils {
     // 使用单例 ObjectMapper,保证性能和线程安全
     // 使用单例 ObjectMapper,保证性能和线程安全
     private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
     private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
     static {
     static {
         // 配置:忽略 JSON 中存在但 Java 对象中不存在的字段(防止报错)
         // 配置:忽略 JSON 中存在但 Java 对象中不存在的字段(防止报错)
         OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
         OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
         // 配置:允许单引号、注释等非标准格式(可选,增加鲁棒性)
         // 配置:允许单引号、注释等非标准格式(可选,增加鲁棒性)
         OBJECT_MAPPER.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
         OBJECT_MAPPER.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
+
+        // 1. 注册 Java 8 时间模块
+        OBJECT_MAPPER.registerModule(new JavaTimeModule());
+        // 2. 设置全局日期格式(匹配你 JSON 中的 yyyy-MM-dd HH:mm:ss)
+        OBJECT_MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+        // 3. 容错配置:忽略 JSON 中存在但 Java 实体类中没有的字段
+        OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
     }
     }
 
 
     /**
     /**
@@ -53,4 +64,13 @@ public class JsonUtils {
             throw new RuntimeException("JSON 序列化失败: " + obj.getClass().getName(), e);
             throw new RuntimeException("JSON 序列化失败: " + obj.getClass().getName(), e);
         }
         }
     }
     }
+
+    public static <T> List<T> toList(String json, Class<T> clazz) {
+        try {
+            // 动态构建 JavaType: List<clazz>
+            return OBJECT_MAPPER.readValue(json, OBJECT_MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
+        } catch (JsonProcessingException e) {
+            return new ArrayList<>();
+        }
+    }
 }
 }

+ 6 - 0
mgr/src/main/java/cn/reghao/devops/mgr/config/spring/BeanConfig.java

@@ -5,6 +5,7 @@ import cn.reghao.jutil.jdk.converter.ByteConverter;
 import cn.reghao.jutil.jdk.http.WebClient;
 import cn.reghao.jutil.jdk.http.WebClient;
 import cn.reghao.jutil.jdk.http.WebRequest;
 import cn.reghao.jutil.jdk.http.WebRequest;
 import cn.reghao.jutil.jdk.shell.ShellExecutor;
 import cn.reghao.jutil.jdk.shell.ShellExecutor;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.client.RestTemplate;
@@ -46,4 +47,9 @@ public class BeanConfig {
     public Disk disk() {
     public Disk disk() {
         return new Disk(systemInfo());
         return new Disk(systemInfo());
     }
     }
+
+    @Bean
+    public ObjectMapper objectMapper() {
+        return new ObjectMapper();
+    }
 }
 }

+ 1 - 1
mgr/src/main/java/cn/reghao/devops/mgr/ops/builder/controller/BuildDeployController.java

@@ -1,10 +1,10 @@
 package cn.reghao.devops.mgr.ops.builder.controller;
 package cn.reghao.devops.mgr.ops.builder.controller;
 
 
+import cn.reghao.devops.common.util.JsonUtils;
 import cn.reghao.devops.mgr.ops.builder.model.po.PipelineStep;
 import cn.reghao.devops.mgr.ops.builder.model.po.PipelineStep;
 import cn.reghao.devops.mgr.ops.builder.model.vo.*;
 import cn.reghao.devops.mgr.ops.builder.model.vo.*;
 import cn.reghao.devops.mgr.ops.app.service.BuildTimeMetrics;
 import cn.reghao.devops.mgr.ops.app.service.BuildTimeMetrics;
 import cn.reghao.devops.mgr.ops.builder.service.*;
 import cn.reghao.devops.mgr.ops.builder.service.*;
-import cn.reghao.devops.mgr.util.JsonUtils;
 import cn.reghao.jutil.jdk.serializer.JsonConverter;
 import cn.reghao.jutil.jdk.serializer.JsonConverter;
 import cn.reghao.jutil.jdk.web.db.PageList;
 import cn.reghao.jutil.jdk.web.db.PageList;
 import cn.reghao.devops.mgr.ops.app.service.AppBuildService;
 import cn.reghao.devops.mgr.ops.app.service.AppBuildService;

+ 4 - 2
mgr/src/main/java/cn/reghao/devops/mgr/ops/mon/InspectionService.java

@@ -20,12 +20,14 @@ import java.util.stream.Collectors;
  */
  */
 @Service
 @Service
 public class InspectionService {
 public class InspectionService {
-    private final ObjectMapper objectMapper = new ObjectMapper();
+    private final ObjectMapper objectMapper;
     private final PrometheusClientManager prometheusClientManager;
     private final PrometheusClientManager prometheusClientManager;
     private final InspectionTaskRepository inspectionTaskRepository;
     private final InspectionTaskRepository inspectionTaskRepository;
 
 
-    public InspectionService(PrometheusClientManager prometheusClientManager,
+    public InspectionService(ObjectMapper objectMapper,
+                             PrometheusClientManager prometheusClientManager,
                              InspectionTaskRepository inspectionTaskRepository) {
                              InspectionTaskRepository inspectionTaskRepository) {
+        this.objectMapper = objectMapper;
         this.prometheusClientManager = prometheusClientManager;
         this.prometheusClientManager = prometheusClientManager;
         this.inspectionTaskRepository = inspectionTaskRepository;
         this.inspectionTaskRepository = inspectionTaskRepository;
     }
     }

+ 3 - 2
mgr/src/main/java/cn/reghao/devops/mgr/ops/mon/PrometheusService.java

@@ -37,11 +37,12 @@ import java.util.stream.Collectors;
 @Slf4j
 @Slf4j
 @Service
 @Service
 public class PrometheusService {
 public class PrometheusService {
-    private ObjectMapper objectMapper = new ObjectMapper();
+    private ObjectMapper objectMapper;
     private final PrometheusClientManager prometheusClientManager;
     private final PrometheusClientManager prometheusClientManager;
     private final Cache<String, Object> cache;
     private final Cache<String, Object> cache;
 
 
-    public PrometheusService(PrometheusClientManager prometheusClientManager, Cache<String, Object> cache) {
+    public PrometheusService(ObjectMapper objectMapper, PrometheusClientManager prometheusClientManager, Cache<String, Object> cache) {
+        this.objectMapper = objectMapper;
         this.prometheusClientManager = prometheusClientManager;
         this.prometheusClientManager = prometheusClientManager;
         this.cache = cache;
         this.cache = cache;
     }
     }

+ 0 - 52
mgr/src/main/java/cn/reghao/devops/mgr/util/JsonUtils.java

@@ -1,52 +0,0 @@
-package cn.reghao.devops.mgr.util;
-
-import cn.reghao.devops.mgr.ops.builder.model.po.PipelineStep;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author          reghao
- * @date            2026-03-09 17:49:31
- */
-@Deprecated
-public class JsonUtils {
-    private static final ObjectMapper mapper = new ObjectMapper();
-    static {
-        // 1. 注册 Java 8 时间模块
-        mapper.registerModule(new JavaTimeModule());
-        // 2. 设置全局日期格式(匹配你 JSON 中的 yyyy-MM-dd HH:mm:ss)
-        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
-        // 3. 容错配置:忽略 JSON 中存在但 Java 实体类中没有的字段
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-    }
-
-    public static List<PipelineStep> toBuildStepList(String json) {
-        if (json == null || json.isEmpty()) {
-            return new ArrayList<>();
-        }
-        try {
-            // 使用 TypeReference 保持泛型 List<BuildStep>
-            return mapper.readValue(json, new TypeReference<List<PipelineStep>>() {});
-        } catch (Exception e) {
-            // 打印具体错误到日志,方便排查
-            e.printStackTrace();
-            return new ArrayList<>();
-        }
-    }
-
-    public static <T> List<T> toList(String json, Class<T> clazz) {
-        try {
-            // 动态构建 JavaType: List<clazz>
-            return mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, clazz));
-        } catch (JsonProcessingException e) {
-            return new ArrayList<>();
-        }
-    }
-}