控制器下方显示两个端点。
&#34; generateRec&#34;填充HashMap<String, Set<String>>
&#34; getRecById&#34;返回由&#34; generateRec&#34;
填充的Map的值我想在jvm中保留rec的值,所以不要让它被垃圾收集。
我不认为rec
会被垃圾收集,因为它永远不会被设置为空?
这是控制器:
@Controller
@RequestMapping("getResponse")
public class RecController {
private static Map<String, Set<String>> rec = new HashMap<String, Set<String>>();
@RequestMapping(value = "/generateRec" , method = RequestMethod.GET)
@ResponseBody
public String generateRec(){
rec = getRec();
return getAsHtml(rec);
}
@RequestMapping(value = "/getRecById" , method = RequestMethod.GET)
@ResponseBody
public String getRecById(@RequestParam String id){
if(rec.containsKey(id)){
return rec.get(id).toString();
}
else {
return "id "+id+ " not found";
}
}
private String getAsHtml(Map<String, java.util.Set<String>> rec){
String recStr = "";
for(String key : rec.keySet()){
recStr += key + " -> " + rec.get(key)+ "<br>";
}
return recStr;
}
}
更新:
在评论中回答问题:
为什么你想&#34;在jvm&#34;中保持rec的值? 填充&#34; rec&#34;是一个昂贵的操作,并确定何时应该填充它是通过调用&#34; / generateRec&#34;端点。我已将更新的问题更新为&#34; rec = getRec();&#34; 。我想我正在尝试实现一个非常基本的缓存。
您希望再次使用它? 当&#34; getRecById&#34;时,将使用rec。调用端点