在项目中需要启动程序时,要将数据库的用户信息表加载到内存中,找到一下几种方式。

1、实现ApplicationListener接口,重写onApplicationEvent方法,可以在项目启动的时候执行该方法。

@Component("userInit")
public class UserInit implements ApplicationListener {
public static Map<String,User> map=new HashMap<String, User>(); public static Map<String, User> getMap() {
return map;
} public static void setMap(Map<String, User> map) {
UserInit.map = map;
} private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
} @Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} @Override
public void onApplicationEvent(ApplicationEvent arg0) {
System.out.println("-------------------加载");
List<User> list=hibernateTemplate.find("from User");
for(User s:list){
map.put(s.getUserName()+s.getPassword(), s);
}
System.out.println(map);
}
}

该种方法实现比较简单,但是可能会在项目中多次执行,因为并没有规定监听。

如果有个类studentEvent继承了ApplicationEvent,那么要针对这个类进行监听

 public void onApplicationEvent(ApplicationEvent _event) {
if (!(_event instanceof StudentEvent)) {
return;
}
...
}

2、实现InitializingBean接口,重写方法afterPropertiesSet()方法,可以在项目启动时进行加载

@Component("userInit")
public class UserInit implements InitializingBean {
public static Map<String,User> map=new HashMap<String, User>(); public static Map<String, User> getMap() {
return map;
} public static void setMap(Map<String, User> map) {
UserInit.map = map;
} private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
} @Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} @Override
public void afterPropertiesSet() throws Exception {
System.out.println("-------------------加载");
List<User> list=hibernateTemplate.find("from User");
for(User s:list){
map.put(s.getUserName()+s.getPassword(), s);
}
System.out.println(map); }
}

这种方式只加载一次,比较方便

Spring:启动项目时加载数据库数据(总结)的更多相关文章

  1. springboot 启动时加载数据库数据到本地Map

    InitDataConfig.java import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Dict; impo ...

  2. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  3. Android-LoaderManager异步加载数据库数据

    LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...

  4. index首页加载数据库数据方法

    https://blog.csdn.net/qq_33198758/article/details/82987805 在做网站的时候,会遇到需要首页加载数据库数据的情况.而web.xml配置的首页: ...

  5. js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据

    防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如 ...

  6. Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页

    1.关于LigerUI: LigerUI 是基于jQuery 的UI框架,其核心设计目标是快速开发.使用简单.功能强大.轻量级.易扩展.简单而又强大,致力于快速打造Web前端界面解决方案,可以应用于. ...

  7. webdriver 启动chrome时加载配置

    Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome配置的方法:  一.加载所有Chrome配置 用Chrom ...

  8. selenium启动firefox时加载扩展

    有些时候,我们测试需要用到插件或者已经导入的证书(比如金融和安全加密行业),而selenium启动firefox时会打开一个新的,不含有任何插件和个人证书的firefox(等同于全新安装后第一次打开的 ...

  9. 依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?

    原文:https://blog.csdn.net/u012345283/article/details/39558537 原文:https://blog.csdn.net/wandrong/artic ...

随机推荐

  1. (转)Ubuntu中让终端对于历史输出的内容保持足够长

    原地址:http://www.crifan.com/ubuntu_terminal_make_retain_long_enough_history_output_content/ Ubuntu下用终端 ...

  2. Orchard开源ASP.NET MVC CMS简介

    项目简介: Orchard CMS 是一个免费的开放源代码内容管理系统,让用户可在 Microsoft ASP.NET MVC 平台上快速创建网站.它基于灵活的扩展性框架构建,使开发人员和定制人员可通 ...

  3. HDU ACM 题目分类

    模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 104 ...

  4. Java iText5.5.1 绘制PDF表格

    iText下载链接:http://sourceforge.net/projects/itext/files/ 会有两个文件夹:extrajars中的extrajars-2.3.jar文件用于解决中文不 ...

  5. 对$NOMOD51的理解

    很多朋友在看asm代码的时候,对下面的语句不是很了解,下面解说一下. $NOMOD51 $INCLUDE (REG932.INC) 解释:$NOMOD51,这一指令功能是使A51不识别8051的所有预 ...

  6. 【Mysql 调用存储过程,输出参数的坑】

    玛德,数据行都返回过来了,就是没有输出参数!!! 扒官方设计文档:这么一段 雷死人了!!! When a stored procedure is called using MySqlCommand.E ...

  7. UESTC_Islands 2015 UESTC Training for Data Structures<Problem J>

    J - Islands Time Limit: 30000/10000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  8. hibernate多对一的操作解析

    在hibernate的关联操作中有很多关系,其中多对一关系是最常见的.我们看这两个表. 这里有部门表和员工表. 那么我们可以这么说一个部门可以有多个员工.这就是1对多的关系.这是我们站在部门表的角度上 ...

  9. SVN trunk、branch、tag的用法

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tag ...

  10. 各硬件装置在 Linux 中的文件名(笔记)

    各硬件装置在 Linux 中的文件名