我有一个JSON文件,正在使用对象映射器将其转换为JAVA对象,如下所示:

String agentName = Request.getAgentName();
ObjectMapper mapper = new ObjectMapper();
agent = mapper.readValue(new File(agentName), Agent.class);


这些工作正常,但问题是,对于我将json转换为java对象的每个请求,我想在Web服务器启动时执行一次。
我该怎么做,这些是其他应用程序。

最佳答案

这可能是使用Singleton类的可能解决方案,该类的映射包含根据请求初始化的所有代理。

public class Agents {

    private static Agents theInstance;

    private final Map<String, Agent> AGENTS_MAP;

    private Agents() {
        this.AGENTS_MAP = new HashMap<>();
    }

    public static Agents getInstance() {
        if (theInstance == null) {
            theInstance = new Agents();
        }

        return theInstance;
    }

    public Agent getAgent(String agentName) {
        if (!AGENTS_MAP.containsKey(agentName) {
            initAgent(agentName);
        }

        return AGENTS_MAP.get(agentName);
    }

    // TODO handle errors
    private static void initAgent(String agentName) {
        ObjectMapper mapper = new ObjectMapper();
        Agent agent = mapper.readValue(new File(agentName), Agent.class);
        AGENTS_MAP.put(agentName, agent);
    }
}

07-21 19:58