Java+SpringMVC中自实现定时加载更新数据库数据到内存的方法
来源:互联网 发布:英语翻译用哪个软件 编辑:程序博客网 时间:2024/06/05 21:54
实现原理
使用static关键字,Bruce Eckel所著的《Thinking in Java》第四版,第五十二页中对static关键字有如下描述:“一旦将什么设为static,数据或方法就不会同那个类的任何实例对象联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据“、““静态”(Static)是指“位于固定位置”(尽管也在 RAM里)。程序运行期间,静 态存储的数据将随时等候调用。可用static 关键字指出一个对象的特定元素是静态的。但 Java 对象本身永 远都不会置入静态存储空间。 ”。被static关键字所修饰的的方法或者属性,在开辟内存空间时只会开辟一个内存空间,也就是说,无论这个类有多少个实例对象,这些对象使用被static关键字修饰的方法或属性时都会指向同一个内存空间。这就为实现加载公共数据到内存提供了可行性。本例中实现类继承了抽象类,如要新加入内存方法,只需继承InitObject类,实现init()和find()方法,在公共类InitDate的cacheList中加入新加入的类的beanName即可。
注本例中的内存管理方法不完全,还有待加强
实现方法
实现代码如下(其中BeanContext是实现BeanFactory的一个实现类,通过IOC获取对象):
主体类
@Component("Init")public class Init{ private static List<String> cacheList = new ArrayList(); //初始化方法 public void init(){ cacheList.add("RunDate"); loadDate(); new Thread(){ public void run(){ while(run){ try{ Thread.sleep(10000); loadDate(); } catch (Exception e){ e.printStackTrace(); } } } }.start(); } public void loadDate(){ for (String beanName : cacheList){ try{ InitObject initObject = BeanContext.getBean(beanName, InitObject.class); initObject.init(); }catch (Exception e){ e.printStackTrace(); } } } public Map<String, Object> find(String key){ InitObject initObject = BeanContext.getBean(beanName, InitObject.class); Map<String, Object> map = initObject.find(key); return map; }}
抽象类
public abstract InitObject{ public void init(); public Map<String, Object> find();}
继承类(其中dao是数据库查询方法)
@Repository("RunDate")public class RunDate extends InitObject{ @Autowried private Dao dao; private static Map<String, Map<String, Object>> map = new HashMap(); @Override public void init(){ List<Map<String, Object>> lst = dao.getMapper(); String key; for (Map<String, Object> m : lst){ key = m.get("key1") + "_" + m.get("key2");//可随意写 map.put(key, m); } } @Override public Map<String, Object> find(String key){ return map.get(key); }}
由于本例中结合了SpringMVC,所以在ApplicationContext.xml中加入如下bean即可启动
<bean id="initDate" class="com.initDate" init-method="init"></bean>
阅读全文
0 0
- Java+SpringMVC中自实现定时加载更新数据库数据到内存的方法
- SpringMvc 系统启动时加载数据到内存中
- SpringMvc 系统启动时加载数据到内存中
- web服务刚启动时SpringMVC注解就加载一定的数据库数据进入内存中
- 实现定时发送邮件功能 数据是从数据库中获取到的
- shell中变量自增的实现方法 ----待更新
- 利用linux的定时任务实现数据库的定时更新
- ORACLE 实现加载配置到内存中,模仿java的hashmap功能
- dataGridView中更新数据到数据库中
- 从文件中加载数据到内存
- Java中如何实现每天定时对数据库的操作
- Java中如何实现每天定时对数据库的操作
- Java实现Excel导入数据库,数据库中的数据导入到Excel。。转载 自学资料总结 实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1、
- springmvc中实现quartz定时任务(每分钟的第3秒执行任务调度方法)
- springmvc中实现quartz定时任务(每分钟的第3秒执行任务调度方法)
- springmvc+mybatis +poi实现导入exce数据l到数据库中
- 从数据库中加载大量数据的方法
- java实现读取XML文件数据插入到数据库中
- Ruby 字符串(String)
- bzoj3944: Sum
- 【Java利器之】Intellij Idea--Debug使用(mac)
- 快速排序 -- 算法小结
- Longest Common Substring
- Java+SpringMVC中自实现定时加载更新数据库数据到内存的方法
- S5PV210 PWM
- 线程间异步调用BeginInvoke
- php之初级PHPExcel
- 注解开发详解
- 数据库管理系统
- unity粒子特效附上贴图后播放动画
- jms 同步 和 异步 的基本方式
- ceph部署 关于osd磁盘选择以及激活问题