Refactor: 引入 ObjectMapperHolder,将 ObjectMapper 彻底单例化。补充一些注释

This commit is contained in:
LuanY77
2025-08-19 13:37:54 +08:00
parent da792043e4
commit fdd3ecf090
10 changed files with 35 additions and 11 deletions

View File

@@ -2,7 +2,6 @@ package com.yomahub.liteflow.ai.tool;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yomahub.liteflow.ai.engine.model.output.structure.generator.JsonSchemaGenerator;
import com.yomahub.liteflow.ai.engine.tool.ToolCallBack;
import com.yomahub.liteflow.ai.engine.tool.ToolDefinition;
@@ -30,7 +29,6 @@ import java.util.concurrent.ConcurrentHashMap;
public class SpringBeanToolRegistry implements ToolRegistry {
private static final LFLog LOG = LFLoggerManager.getLogger(SpringBeanToolRegistry.class);
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private final ApplicationContext applicationContext;
private final Map<String, ToolCallBack> toolCache = new ConcurrentHashMap<>();

View File

@@ -5,7 +5,7 @@ import org.slf4j.Logger;
import org.slf4j.Marker;
/**
* TODO
* engine 模块日志
*
* @author 苍镜月
* @since TODO

View File

@@ -8,7 +8,7 @@ import java.util.HashMap;
import java.util.Map;
/**
* TODO
* engine 模块日志
*
* @author 苍镜月
* @since TODO

View File

@@ -12,6 +12,7 @@ import com.yomahub.liteflow.ai.engine.model.output.structure.Description;
import com.yomahub.liteflow.ai.engine.model.output.structure.ParameterizedTypeImpl;
import com.yomahub.liteflow.ai.engine.model.output.structure.TypeReference;
import com.yomahub.liteflow.ai.engine.tool.annotation.ToolParam;
import com.yomahub.liteflow.ai.engine.util.ObjectMapperHolder;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
@@ -33,7 +34,7 @@ public class JsonSchemaGenerator {
private static final Character COMMA = ',';
private static final SchemaGenerator strictSchemaGenerator;
private static final SchemaGenerator schemagenerator;
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final ObjectMapper MAPPER = ObjectMapperHolder.getInstance();
static {
// 配置 JSON Schema 生成器

View File

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yomahub.liteflow.ai.engine.model.output.structure.TypeReference;
import com.yomahub.liteflow.ai.engine.model.output.structure.generator.JsonSchemaGenerator;
import com.yomahub.liteflow.ai.engine.util.ObjectMapperHolder;
import java.lang.reflect.Type;
import java.util.Map;
@@ -92,7 +93,7 @@ public class JsonSchemaParser<T> {
*/
public JsonSchemaParser(JsonNode jsonSchema) {
this.targetType = Map.class;
this.objectMapper = new ObjectMapper();
this.objectMapper = ObjectMapperHolder.getInstance();
this.jsonSchema = jsonSchema;
}
@@ -122,7 +123,7 @@ public class JsonSchemaParser<T> {
*/
public JsonSchemaParser(Type targetType, boolean strict) {
this.targetType = targetType;
this.objectMapper = new ObjectMapper();
this.objectMapper = ObjectMapperHolder.getInstance();
this.jsonSchema = JsonSchemaGenerator.generate(targetType, strict);
}

View File

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yomahub.liteflow.ai.engine.model.output.structure.TypeReference;
import com.yomahub.liteflow.ai.engine.model.output.structure.parser.JsonSchemaParser;
import com.yomahub.liteflow.ai.engine.util.ObjectMapperHolder;
import java.lang.reflect.Type;
import java.util.Objects;
@@ -19,7 +20,7 @@ import java.util.Objects;
public class ToolDefinition<I> {
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final ObjectMapper MAPPER = ObjectMapperHolder.getInstance();
private final String name;

View File

@@ -8,6 +8,7 @@ import com.yomahub.liteflow.ai.engine.model.output.structure.TypeReference;
import com.yomahub.liteflow.ai.engine.model.output.structure.parser.JsonSchemaParser;
import com.yomahub.liteflow.ai.engine.tool.ToolCallBack;
import com.yomahub.liteflow.ai.engine.tool.ToolDefinition;
import com.yomahub.liteflow.ai.engine.util.ObjectMapperHolder;
import java.lang.reflect.Type;
import java.util.Objects;
@@ -34,7 +35,7 @@ public class FunctionToolCallback<I, O> implements ToolCallBack {
public FunctionToolCallback(ToolDefinition<I> toolDefinition, Function<I, O> function) {
this.toolDefinition = toolDefinition;
this.function = function;
this.objectMapper = new ObjectMapper();
this.objectMapper = ObjectMapperHolder.getInstance();
}
@Override

View File

@@ -8,6 +8,7 @@ import com.yomahub.liteflow.ai.engine.log.EngineLogManager;
import com.yomahub.liteflow.ai.engine.tool.ToolCallBack;
import com.yomahub.liteflow.ai.engine.tool.ToolDefinition;
import com.yomahub.liteflow.ai.engine.tool.annotation.ToolParam;
import com.yomahub.liteflow.ai.engine.util.ObjectMapperHolder;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
@@ -24,7 +25,7 @@ import java.util.Objects;
public class MethodToolCallBack implements ToolCallBack {
private static final EngineLog LOG = EngineLogManager.getLogger(MethodToolCallBack.class);
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private static final ObjectMapper OBJECT_MAPPER = ObjectMapperHolder.getInstance();
private final ToolDefinition<?> toolDefinition;
private final Object bean;

View File

@@ -0,0 +1,22 @@
package com.yomahub.liteflow.ai.engine.util;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* ObjectMapperHolder
*
* @author 苍镜月
* @since TODO
*/
public class ObjectMapperHolder {
private static final ObjectMapper MAPPER = new ObjectMapper();
private ObjectMapperHolder() {
}
public static ObjectMapper getInstance() {
return MAPPER;
}
}

View File

@@ -31,7 +31,6 @@ public class OllamaChatRequest extends ChatRequest {
// ==== RequestBody 相关参数 =====
public OllamaChatRequest() {
super();
}
public OllamaChatRequest(