文档章节

JAVA 动态配置 (配置源={properties,redis})

l
 lykin1972
发布于 2016/04/14 17:21
字数 342
阅读 76
收藏 4

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

卤主现在用的是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


© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 8
码字总数 3986
作品 0
岳阳
私信 提问
用于 Java 开发的配置工具 - Simple Configuration Facade

SCF: 简单配置门面 Simple Configuration Facade, 简写为 SCF。是 代码 和 外部配置 (properties文件, 环境变量,系统/命令行参数, yaml文件, 等等)之间的一层抽象。命名上和另一个著名组件 ...

koqizhao
2018/08/30
0
0
【死磕Sharding-jdbc】—orchestration简介&使用

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/c33191385767 orchestration简介 sharding-jdbc2.x核心功能之一就是orchestration,即编排治理,什么意思呢?官方文档介绍--2.0...

飞哥-Javaer
2018/08/09
0
0
翻译:Gradle之 Java插件

原文地址 http://www.gradle.org/docs/current/userguide/java_plugin.html 要使用Java插件,在脚本里加入: Example 23.1. Using the Java plugin Java插件引入了一个概念:源集(source se...

davelet
2014/02/14
0
0
【死磕Sharding-jdbc】—–基于ssm

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/602e24845ed3 本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为1.5.4.1)进行分库分...

飞哥-Javaer
2018/05/05
0
0
MyBatis源码窥探:MyBatis整体架构解析

Mybatis的使用这里就不介绍了,不知道怎么使用的朋友可以点击 http://www.mybatis.org/mybatis-3/zh/index.html 这里面的教程很详细,包括xml的配置、映射、动态sql都有介绍,可以学习和使用...

java邵先生
01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux Wireshark普通用户启动使用方案

当系统安装好Wireshark后请正常启动是否可以进行正常使用,如果不行请参考下列指导 向系统添加一个用户组 sudo groupadd wireshark //如提示此组存在可跳过 将指定用户添加到这个组中 sudo...

CHONGCHEN
今天
1
0
CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
2
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
4
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
4
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部