当前位置: 首页 > news >正文

springMVC启动时,加载数据至内存中配置详解;

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.配置启动bean


<bean id="sysInit" class="com.XXX.XXX.XXX.SysInit" init-method="init"></bean>

2.java类

初始化类



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

import com.tsou.comm.cache.impl.SysConfig;
import com.tsou.comm.cache.impl.SysDictionary;
import com.tsou.comm.cache.impl.SysTimer;

/**
 *  
 * 类概述:系统启动时由springMVC调用init方法进行资源初始化
 * @version 
 */
public class SysInit {
	@Autowired
	JdbcTemplate jdbcTemplate;
	
	public void init(){
		loadSysSource(new SysConfig());
		loadSysSource(new SysDictionary());
	}
	/**
	 * 
	 * 描述:加载系统配置
	 * @param 
	 * @return void
	 */
	public void loadSysSource(SourceInitInf source){
		source.init(jdbcTemplate);
	}

}

 

接口类


import org.springframework.jdbc.core.JdbcTemplate;

public interface SourceInitInf {
	public void init(JdbcTemplate jdbcTemplate);
}

具体实现类: 这里SysConfig做例子 (里面包含增删改成)


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.jdbc.core.JdbcTemplate;
 
/**
 * <p class="detail">
 * 功能:系统初始化加载时加载配置表里面的配置项进行静态缓存
 * </p>
 * @ClassName: SysConfig 
 * @version V1.0   
 */
public class SysConfig implements SourceInitInf {

	Logger log=Logger.getLogger(SysConfig.class);
	/**
	 * 系统配置静态缓存map
	 */
	public static Map<String,String> SYS_CONFIG_MAP = new HashMap<String,String>();
	
	/**
	 * 系统启动时初始化加载配置
	 */
	@Override
	public void init(JdbcTemplate jdbcTemplate) {
		String sql = "SELECT id,ckey,cvalue,group_id,config_name FROM tb_sys_config ";
		List<Map<String,Object>> config = jdbcTemplate.queryForList(sql );
		for(int i=0;  i<config.size(); i++){
			SYS_CONFIG_MAP.put(config.get(i).get("ckey"), config.get(i).get("cvalue")));
		}
		log.info("tb_sys_config缓存加载完成,共加载配置项:"+config.size());
	}
	/**
	 * 
	 * 描述:获取配置接口
	 * @param 
	 * @return String
	 */
	public static String getValue(String key){
		return SYS_CONFIG_MAP.get(key);
	}
	/**
	 * 
	 * 描述:更新配置值
	 * @param 
	 * @return void
	 */
	public static void addValue(String key,String value){
		SYS_CONFIG_MAP.put(key, value);
	}
	/**
	 * 
	 * 描述:更新配置值
	 * @param 
	 * @return void
	 */
	public static void updateValue(String key,String value){
		SYS_CONFIG_MAP.remove(key);
		SYS_CONFIG_MAP.put(key, value);
	}
	/**
	 * 
	 * 描述:删除配置值
	 * @param 
	 * @return void
	 */
	public static void deleteValue(String key){
		SYS_CONFIG_MAP.remove(key);
	}
}

 

调用时

类名.SYS_CONFIG_MAP  就可以获取缓存内容了;

 

关于实现loadSysSource()接口工厂方法,不是很理解的,推荐阅读这篇博客: java中的接口与工厂模式;

 

转载于:https://my.oschina.net/java1314/blog/843102

相关文章:

  • HTTP笔记(一)
  • Nginx开启OCSP Stapling
  • linux学习笔记
  • Linux常用命令——挂载 mount
  • 【SGE】任务显示 T 状态,qstat -j 报错 can not find an unused add_grp_id
  • NTP server
  • nginx访问控制
  • python 继承基础
  • 前端开发中同步和异步的区别
  • Powershell IE自动登录
  • 二维平面内的碰撞检测【一】
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • BZOJ 2244: [SDOI2011]拦截导弹 [CDQ分治 树状数组]
  • Jquery里live事件移除原因
  • Java NIO中的通道Channel(一)通道基础
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6语法详解(一)
  • idea + plantuml 画流程图
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • js操作时间(持续更新)
  • vagrant 添加本地 box 安装 laravel homestead
  • Web设计流程优化:网页效果图设计新思路
  • 仿天猫超市收藏抛物线动画工具库
  • 高度不固定时垂直居中
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 选择阿里云数据库HBase版十大理由
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #HarmonyOS:基础语法
  • ${ }的特别功能
  • (27)4.8 习题课
  • (SpringBoot)第七章:SpringBoot日志文件
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三)模仿学习-Action数据的模仿
  • (转)Sublime Text3配置Lua运行环境
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET : 在VS2008中计算代码度量值
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET单元测试
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @Query中countQuery的介绍
  • @ResponseBody
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [2018-01-08] Python强化周的第一天
  • [BZOJ2850]巧克力王国
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [codevs 1296] 营业额统计