JAVA 动态配置 (配置源={properties,redis})
JAVA 动态配置 (配置源={properties,redis})
lykin1972 发表于2年前
JAVA 动态配置 (配置源={properties,redis})
  • 发表于 2年前
  • 阅读 60
  • 收藏 4
  • 点赞 1
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

摘要: 每次修改配置还得重启,感觉很麻烦【转载请注明出处】

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

卤主现在用的是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<String,Object> cache = new HashMap<String, Object>();
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


共有 人打赏支持
粉丝 0
博文 8
码字总数 3986
×
lykin1972
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: