WEB容器啓動的時候,加載常用數據到內存

項目中,有很多數據是基本上不變的,同時用到的頻率還比較高,如果每次都從數據庫讀取,不但浪費資源,還影響了系統執行的速度。

所以對於這種數據,基本上是在WEB容器啓動的時候,就去數據庫讀取,放到內存中,用的時候直接從內存裏面拿就OK了。

這裏有個例子,省市的級聯信息,對應的code,name都保存在數據庫中的一個地區代碼表中,其他表中保存的省市信息,如果沒有冗餘名稱的話,一般都保存地區信息的對應代碼。
那麼在頁面顯示的時候,需要把相關的代碼轉換成省市的名稱。這個時候就需要把省市的code--->name對應信息查詢出來。

首先在service層配置初始化的bean:
<bean id="regionService" class="com.xxx.service.impl.RegionServiceImpl"
init-method="initRegion" lazy-init="true"/>

再看RegionServiceImpl.java的代碼:
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RegionServiceImpl implements RegionService {

public RegionDAO regionDAO;
public static Map<String,String> regionMap = new HashMap<String,String>();

public void initRegion(){
if(regionMap.isEmpty()){
List<Region> regionList = regionDAO.getRegions();
for(Region r : regionList){
regionMap.put(r.getCode(),r.getName());
}
}
}

public Map<String,String> getAllRegionMap(){
return getRegionMap();
}

public static Map<String, String> getRegionMap() {
return regionMap;
}

public static void setRegionMap(Map<String, String> regionMap) {
RegionServiceImpl.regionMap = regionMap;
}

}


Action裏面,從service層取到regionMap,在put到前端頁面jsp或者vm
Map<String,String> regionMap = regionService.getAllRegionMap();
model.addAttribute("regionMap", regionMap);


前端頁面velocity:
$regionMap.get(code)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章