1.功能描述
springboot項目啓動加載緩存,緩存動態配置到數據庫,可以修改,刪除,項目啓動可以加載整合配置表數據到緩存
2.使用api
五個方法如上圖
3.對應數據庫表
CREATE TABLE `sys_config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
`type` tinyint(3) DEFAULT '10' COMMENT '類型:10:系統關鍵參數;20:業務參數;30:協議參數;40:H5參數;50:備註參數;60:短信參數;80:第三方',
`name` varchar(30) DEFAULT '' COMMENT '參數名稱',
`code` varchar(50) DEFAULT '' COMMENT '編號',
`value` varchar(2048) DEFAULT '' COMMENT '參數對應的值',
`status` tinyint(1) DEFAULT '0' COMMENT '狀態 0不啓用 1啓用',
`remark` varchar(128) DEFAULT NULL COMMENT '備註說明',
`creator` int(11) DEFAULT NULL COMMENT '創建者',
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='系統配置表';
項目啓動會加載整個表格數據到緩存
4.上代碼
配置類代碼:
/**
* @Auther: corey
* @Date: 2020/6/19 09:52
* @Description: 加載緩存啓動
*/
@Configuration
public class ConfigCacheUtils {
private final static Logger log = LoggerFactory.getLogger(ConfigCacheUtils.class);
@Resource
private com.itcorey.mapper.sysConfigMapper sysConfigMapper;
@Bean
public Map<String, Object> ConfigCache() {
log.info("configMap緩存。。。開始加載緩存");
Map<String, Object> configMap = new HashMap<String, Object>();
List<sysConfig> sysConfigs = sysConfigMapper.findAll();
log.info("sysConfig {}", JSON.toJSON(sysConfigs));
for (sysConfig sysConfig : sysConfigs) {
if (null != sysConfig && StringUtil.isNotBlank(sysConfig.getCode())) {
configMap.put(sysConfig.getCode(), sysConfig.getValue());
}
}
log.info("加載成功。。。。。。");
Global.configMap = new HashMap<String, Object>();
Global.configMap.putAll(configMap);
return configMap;
}
}
Global 類:
/**
*啓動加載緩存
*/
public class Global {
public static Map<String, Object> configMap;
public static Map<String, Object> msg_template_Map;
public static int getInt(String key){
return NumberUtil.getInt(StringUtil.isNull(configMap.get(key)));
}
public static double getDouble(String key){
return NumberUtil.getDouble(StringUtil.isNull(configMap.get(key)));
}
public static String getValue(String key) {
return StringUtil.isNull(configMap.get(key));
}
public static Object getObject(String key){
return configMap.get(key);
}
public static String getMsgTempLate(String key) {
return StringUtil.isNull(msg_template_Map.get(key));
}
}
sysConfigMapper 就不貼出來類,就是單純的查詢數據庫的mapper。稍後會把項目的地址貼出來,喜歡可以clone下來自己玩
5.測試啓動加載緩存
我啓動後將數據存到緩存,當然也可以啓動加載到緩存,下篇文章告訴你整合redis