聲明:
有寫字典數據不會頻繁更新,但是會頻繁查詢,想要減少數據庫鏈接次數,把內容緩存到項目的全局變量中,提高方法查詢速度
代碼:
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class CodeCache {
public static Map<String, TownNameDto> codeMap = new HashMap<String, TownNameDto>();
public static Map<String, CompanyModel> companyMap = new HashMap<String, CompanyModel>();
@Autowired
private CityDao cityDao;
@Autowired
private CompanyDao companyDao;
@PostConstruct
public void init() {
//系統啓動中。。。加載codeMap
List<TownNameDto> codeList = cityDao.selectCityNameAndCodeALL();
for (TownNameDto code : codeList) {
codeMap.put(code.getTownCode() + code.getValue(), code);
}
List<CompanyModel> companyModels = companyDao.selectCompanies();
for (CompanyModel company : companyModels) {
companyMap.put(company.getCode(), company);
}
}
@PreDestroy
public void destroy() {
//系統運行結束
}
@Scheduled(cron = "0 0 0/2 * * ?")
public void testOne() {
//每2小時執行一次緩存
init();
}
}
使用:
//從緩存中獲取城市;
Map<String, TownNameDto> cityModelMap = CodeCache.codeMap;
Map<String, CompanyModel> companyModelMap = CodeCache.companyMap;