我有一个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);
}
}