系统启动时初始化数据功能分析
一、功能概述应用启动时将行政区划数据市、县加载到内存缓存避免频繁查询数据库提供 O(1) 的查询效率。二、核心实现2.1 初始化监听器ComponentAllArgsConstructorpublicclassDbCacheDataInitimplementsApplicationRunner{privatefinalBasicRegionServicebasicRegionService;Overridepublicvoidrun(ApplicationArgumentsargs)throwsException{ListBasicRegionregionsbasicRegionService.list();for(BasicRegionregion:regions){if(DataConstant.REGION_LEVEL_OF_CITY.equals(region.getLevel())){DbCacheData.cities.put(region.getAdcd(),region.getAdnm());}if(DataConstant.REGION_LEVEL_OF_COUNTY.equals(region.getLevel())){DbCacheData.counties.put(region.getAdcd(),region.getAdnm());}}}}三、调用方式3.1 自动触发通过Component注解自动注册应用启动时自动执行。3.2 业务使用// 获取市名称StringcityNameDbCacheData.cities.get(130100);// 获取县名称StringcountyNameDbCacheData.counties.get(130102);// 校验行政区代码booleanisValidCityDbCacheData.cities.containsKey(adcd);// 获取所有城市列表ListStringcityListnewArrayList(DbCacheData.cities.values());3.3 服务层示例publicclassRegionService{publicStringgetRegionName(Stringadcd,Integerlevel){if(DataConstant.REGION_LEVEL_OF_CITY.equals(level)){returnDbCacheData.cities.get(adcd);}elseif(DataConstant.REGION_LEVEL_OF_COUNTY.equals(level)){returnDbCacheData.counties.get(adcd);}returnnull;}}四、适用场景基础数据查询数据转换和校验报表统计和展示需要频繁访问的配置数据