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