文档章节

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

莫库什勒
 莫库什勒
发布于 2017/02/21 19:25
字数 407
阅读 98
收藏 1

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中的接口与工厂模式;

 

© 著作权归作者所有

莫库什勒

莫库什勒

粉丝 20
博文 173
码字总数 68317
作品 0
杭州
高级程序员
私信 提问
spring boot修改代码后无需重启设置,在开发时实现热部署

Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools) 热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改...

微wx笑
2018/04/13
0
0
Spring Boot教程--Actuator监控介绍

注意:本文介绍基于boot: 1.x 版本。2.x对应会有所变化。 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会...

spinachgit
03/06
0
0
Spring Boot admin 2.0 详解

一、什么是Spring Boot Admin ? Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过...

公众号:程序员果果
今天
0
0
SpringBoot详解(一)-快速入门

SpringBoot详解系列文章: SpringBoot详解(一)-快速入门 SpringBoot详解(二)-Spring Boot的核心 SpringBoot详解(三)-Spring Boot的web开发 SpringBoot详解(四)-优雅地处理日志 一、S...

CSDN_LQR
2017/08/30
0
0
吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。 下面,我给大家总结下有...

Java技术栈
2018/10/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。 在使用线程隔离的时候,有个问题是必须要解决的...

xiaomin0322
32分钟前
1
0
使用 Jenkins + Ansible 实现 Spring Boot 自动化部署101

本文首发于:Jenkins 中文社区 本文要点: 设计一条 Spring Boot 最基本的流水线:包括构建、制品上传、部署。 使用 Docker 容器运行构建逻辑。 自动化整个实验环境:包括 Jenkins 的配置,J...

Jenkins中文社区
37分钟前
1
0
springcloud配置中心和消息总线,学习,记录其中的问题

改造配置中心的客户端,接入消息总线 1.增加pom文件的引用 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20......

夜中孤影
50分钟前
3
0
gzip压缩

tar -zcvf gz包路径 被压缩的路径 tar -zcvf /home/xxx/test.tar.gz hello gz包的路径可以是 完整的也可以相对 , 被压缩的路径 不要全路径 不然压缩包里也会有全路径...

shzwork
56分钟前
3
0
rancher-1

部署rancher 官方快速部署 https://www.cnrancher.com/quick-start/ 部署命令 mkdir /data/rancher -p# 建立存放rancher数据的目录sudo docker run -d --restart=unless-stopped -v /dat......

以谁为师
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部