文档章节

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

l
 lykin1972
发布于 2016/04/14 17:21
字数 342
阅读 68
收藏 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
岳阳
【死磕Sharding-jdbc】—orchestration简介&使用

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

飞哥-Javaer
08/09
0
0
用于 Java 开发的配置工具 - Simple Configuration Facade

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

koqizhao
08/30
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
Spring Boot学习笔记

文件上传与下载 springboot 上传文件到服务器 Spring Boot2.0连载(33)-- Spring Boot文件上传下载 SpringBoot项目的The temporary upload location ***is not valid 问题 /tmp/tomcat.8483...

OSC_fly
07/26
0
0
【死磕Sharding-jdbc】—–基于ssm

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

飞哥-Javaer
05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

实战讲解高并发和秒杀抢购系统设计

互联网特别是电商平台,阿里双11秒杀、还有12306春运抢票、以及平时各种节假日抢购活动等,都是典型的高并发场景。 这类场景最大的特征就是活动周期短,瞬间流量大(高并发),大量的人短期涌...

xtof
25分钟前
0
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
28分钟前
4
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
37分钟前
0
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
48分钟前
1
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
54分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部