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

本文介绍了一种在Spring MVC框架中实现系统启动时资源初始化的方法。通过定义`SysInit`类并在Spring配置文件中配置其启动bean,可以实现对系统配置、字典等资源的加载。此外,还提供了一个具体的实现类`SysConfig`,用于加载和缓存配置表中的配置项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值