`

java内存中初始化数据字典

    博客分类:
  • java
 
阅读更多
1.在web.xml中配置监听,注意:要配置在Spring加载之后
<context-param>
		<description>是否缓存字典(配置值:true,false)</description>
		<param-name>cache_wangxuegang</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<description>缓存字典Json变量名</description>
		<param-name>wangxuegangJsonsKey</param-name>	
		<param-value>wangxuegang</param-value>
	</context-param>
	<context-param>
		<description>缓存字典List变量名</description>
		<param-name>wangxuegangListsKey</param-name>
		<param-value>wangxuegangList</param-value>
	</context-param>
	
	<!-- Spring Context Loader Listener define -->
    <listener>
		<description>业务代码装载监听器</description>
		<listener-class>com.wangxuegang.listener.WangxuegangApplicationListener</listener-class>
	</listener>

 

2.创建WangxuegangApplicationListener类实现ServletContextListener接口
package com.wangxuegang.listener;


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

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.support.WebApplicationContextUtils;



/**
 * 
 * @Description 内存中加载数据字典
 * @author wangxuegang
 * @date 2018年11月15日 
 * @version V1.0 
 * =================Modify Record=================
 * @Modifier			@date			@Content
 *
 */
public class WangxuegangApplicationListener implements ServletContextListener  {
	
	private static final Logger logger = LoggerFactory.getLogger(WangxuegangApplicationListener.class);
	
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		
		logger.info("开始加载数据缓存...");
		//获取业务Service
		//WangxuegangService wangxuegangservice = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()).getBean(WangxuegangService.class);
		//wangxuegang(sce.getServletContext(),wangxuegangservice);
		logger.info("初始化字典数据成功...");
	}
	
	/**
	 * 
	 * @Description 查询数据库字典
	 * @author wangxuegang
	 * @date 2018年11月22日
	 * @param servletContext
	 */
	private void wangxuegang(ServletContext servletContext,WangxuegangService wangxuegangservice) {
		
		//是否开启数据字典加载缓存
		String cache =servletContext.getInitParameter("cache_wangxuegang");
		if("true".equals(cache)){
			
			//获取key
			String JsonsKey =servletContext.getInitParameter("wangxuegangJsonsKey");
			String ListsKey =servletContext.getInitParameter("wangxuegangListsKey");
			
			Wangxuegang wangxuegang = wangxuegangservice.getWangxhegang();
			List<Wangxuegang> wangxuegangList = wangxuegangservice.getWangxhegangList();
			
			servletContext.setAttribute(JsonsKey, wangxuegang);
			servletContext.setAttribute(ListsKey, wangxuegangList);
		}
		
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
	}
	
}

 

3.Wangxuegangcontroller层,在内存中取值
request.getSession.getServletContext().getAttribute("JsonsKey");
request.getSession.getServletContext().getAttribute("ListsKey");

 

分享到:
评论

相关推荐

    Springboot项目启动时加载数据库数据到内存.rar

    博客地址:... 1. 启动后访问http://localhost:8848/code,可见控制台输出codeMap中的值 2. 新建一个只有key和value两个字段的表code 3. 不要轻易浪费积分下载代码,没什么实质内容

    JAVA实现LZW压缩

    3. **编码过程**:遍历输入数据,找到最长的已存在于字典中的序列,输出其编码,并将新序列(当前序列加下一个字符)添加到字典中。 4. **编码转换**:将编码转换为可存储的格式,如二进制,以便写入输出文件。 5. *...

    Java数据结构和算法

    - **隐式初始化**:使用`new`关键字为数组分配内存。 ```java int[] arr = new int[5]; // 初始化5个整型元素 ``` **数组的遍历**: - 使用循环遍历数组中的元素。 ```java for (int i = 0; i ; i++) { ...

    lzw压缩算法java实现

    它们组合成第一个基本字符串,如果字典中没有这个字符串,就将它添加到字典中,当前前缀写入代码流,当前码作为新的当前前缀。接着,读取下一个字符作为新的当前码,以此类推。如果在字典中找到了当前前缀和当前码...

    LZW_JAVA-and-cPP.rar_lzw_lzw java_lzw_java

    1. **初始化字典**: 在LZW算法开始时,字典包含所有单个字符,通常是256个ASCII字符。每个字符对应一个唯一的编码,范围从1到256。 2. **输入处理**: 遍历输入数据流,将连续的字符组合成一个字符串。在Java和...

    字典树_字典树_

    1. 初始化:创建根节点并开始构建树。 2. 插入操作:接收一个字符串,逐字符插入到树中,更新相应的子节点。 3. 查找操作:输入一个字符串,沿路径查找,如果到达终端节点则表示存在,否则不存在。 4. 删除操作:...

    lzw.rar_Java实现Lzw_LZW Compression_lzw

    解压缩过程中也需要一个字典,但初始状态为空,每次读取编码后,根据编码从字典中取出字符串,并将其与前一个解码后的字符串合并,形成新的字符串并添加到字典中。 5. **数据流操作**:在Java中,可以使用`...

    LZ78算法实现对任意字符串的压缩与解压

    1. 初始化:创建一个空的字典,通常用一个数组或哈希表表示,用于存储已编码的字符串及其对应的编码。 2. 输入处理:对于用户输入的任意字符串,将其转换为二进制形式。在Java中,这可以通过将每个字符转换为其ASCII...

    双数组字典树的-java实现,用于敏感词过滤

    1. **初始化**:创建`A[]`和`B[]`数组,初始大小通常设置为256(ASCII字符集)或65536(Unicode字符集)。 2. **构建过程**:遍历排序后的字符串,对每个字符进行插入操作,更新`A[]`和`B[]`。插入过程中需考虑如何...

    LZW.rar_LZW编码_file lzw java_lzw_lzw java_压缩解压

    1. **构建字典**:初始化一个空的字典,通常包含所有可能的单字符字典项。 2. **读取输入数据**:从输入文件中逐位读取数据。 3. **编码过程**:如果当前字典中存在与已读取的前缀匹配的字串,则将该字串的索引输出...

    Java自学总结94点

    - 数据类型初始化和赋值涉及到值类型的传递以及对象类型的引用。 - **值类型**: 当进行赋值操作时,实际复制的是该值的一个副本。 - **对象类型**: 赋值时复制的是对象的引用。 6. **Unicode编码**: - Java使用...

    use Java, learn about Data Structures of Java.zip

    理解数组的创建、初始化、遍历和操作方法至关重要。 2. **链表(LinkedList)**:链表是一种动态数据结构,每个节点包含数据和指向下一个节点的引用。Java中的LinkedList类实现了List接口,提供了插入、删除和访问...

    数据结构 串的操作

    1. **创建与赋值**:创建串通常通过初始化来完成,例如在C++中`std::string str = "Hello, World!";`。赋值则是将一个已有的串的值赋予另一个串,如`str = "New String"`。 2. **比较**:串之间的比较可以是基于...

    Java性能优化之数据结构实例代码

    或者说把校验的工作向前做(数据的初始化,在部署系统的过程中进行)。即:在页面加载的时候数据只调用提供的public方法进行校验。使用内存中的数组和字典来快速查找学生选课记录,提高了查询效率。 在这个实例代码...

    Java数据结构和算法.docx

    - 初始化数组可以在声明时完成,如`int[] array = {1, 2, 3};` - Java提供了边界检查,避免数组越界访问,这是与C/C++的一个重要区别。 2. **多维数组**: - 多维数组是数组的数组,如二维数组`int[][] ...

    oracle10g系统管理笔记 内存篇

    - **数据字典缓存(Data Dictionary Cache)**:存储数据库对象的元数据信息。 - **共享池(Shared Pool)**:包含SQL语句的解析树和PL/SQL代码。 - **大型池(Large Pool)**:用于RMAN备份、排序和大块I/O操作...

    Oracle 10g的内存调整报告

    #### 初始化参数查询示例 为了查看当前Oracle实例中这些参数的具体值,可以执行如下SQL命令: ```sql SELECT NAME, VALUE FROM v$parameter WHERE NAME IN ( 'sga_max_size', 'db_cache_size', 'shared_pool_...

Global site tag (gtag.js) - Google Analytics