博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA 动态配置 (配置源={properties,redis})
阅读量:6608 次
发布时间:2019-06-24

本文共 2371 字,大约阅读时间需要 7 分钟。

hot3.png

每次修改配置还得重启,感觉很麻烦

卤主现在用的是properties,redis做配置,因为没有用到mysql等关系型数据库

贴代码

全局Application Config 代码

package com.shield.device;import java.util.HashMap;import java.util.Map;import com.shield.cache.CacheKey;import com.shield.cache.CacheService;import com.shield.cache.springredis.RedisService;import com.shield.springcontext.ContextUtils;import com.shield.springcontext.CustomizedPropertyConfigurer;import com.shield.util.JsonUtil;public class AppConfig {private static final AppConfig appconfig = new AppConfig() ;private CacheService redisService ;private final Map
 cache = new HashMap
();private AppConfig(){redisService = ContextUtils.getBean(RedisService.class);}public static boolean getBoolean(String key) {Object o = getObject(key);if(o instanceof Boolean){return (Boolean)o ;}return Boolean.parseBoolean(key);}public static String getString(String key){Object o = getObject(key);if(o instanceof String){return (String)o ;}return o.toString();}public static float getFloat(String key) {Object o = getObject(key);if(o instanceof Float){return (float)o ;}if(o instanceof String){return Float.parseFloat((String)o) ;}return Float.parseFloat(o.toString());}public static int getInt(String key){Object o = getObject(key);if(o instanceof Integer){return (int)o ;}if(o instanceof String){return Integer.parseInt((String)o) ;}return Integer.parseInt(o.toString());}public static void put(String key, String value) {appconfig.redisService.setHashValue(CacheKey.APP_CONFIG, key, value);appconfig.cache.put(key, value);}public static String cacheToString() {return JsonUtil.objectToJson(appconfig.cache);}public static String contextPropertyToString() {return JsonUtil.objectToJson(CustomizedPropertyConfigurer.getContextPropertyMap());}public static Object getObject(String key){Object o = appconfig.cache.get(key);if(o == null){o = appconfig.redisService.getHashValue(CacheKey.APP_CONFIG, key);if(o != null){appconfig.cache.put(key, o);}}if(o == null){o = CustomizedPropertyConfigurer.getContextProperty(key);if(o != null){appconfig.cache.put(key, o);}}if(o == null){throw new RuntimeException("Properties key: "+key +" value is empty, please check it.");}return o;}public static void flushAll(){appconfig.cache.clear();}}

  flushAll就是清除掉数据,比如redis的配置修改了。

  推荐在http访问时候调用 

 如: 

     curl localhost:8080/config/reload

转载于:https://my.oschina.net/u/1788492/blog/659598

你可能感兴趣的文章
组装树形结构循环寻找父子关系速度过慢的一种解决方案
查看>>
谷歌Fuchsia系统将支持运行安卓App
查看>>
BigDecimal 比较大小
查看>>
一些你所不知道的VS Code插件
查看>>
xwiki系统
查看>>
Mysql InnoDB 行锁和表锁介绍
查看>>
利用vertical-align实现水平垂直居中弹窗
查看>>
JeeSite的Excel导入、导出、支持大数据量,使用annotation最小化配置
查看>>
微服务随笔
查看>>
发生NoClassDefFoundError的可能之一
查看>>
JS基于正则实现数字千分位用逗号分割
查看>>
七月SSL行业新闻回顾
查看>>
专访Mockplus用户齐嘉伟 | Mockplus满足做原型的所有需求
查看>>
01、Vue.js 开篇---Vue的介绍及准备工作
查看>>
Java操作MongoDB采用MongoRepository仓库进行条件查询
查看>>
你应该知道的 RPC 原理
查看>>
将Android手机无线连接到Ubuntu实现唱跳Rap
查看>>
对话 | 薛娅菲:从0到1,行则将至
查看>>
开发一个工业互联网应用到底需要几步?
查看>>
别人在忙挖矿,阿里工程师却悄悄用区块链搞了件大事!
查看>>