Spring:启动项目时加载数据库数据(总结)
在项目中需要启动程序时,要将数据库的用户信息表加载到内存中,找到一下几种方式。
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:启动项目时加载数据库数据(总结)的更多相关文章
- springboot 启动时加载数据库数据到本地Map
		InitDataConfig.java import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Dict; impo ... 
- ajax验证表单元素规范正确与否   ajax展示加载数据库数据    ajax三级联动
		一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ... 
- Android-LoaderManager异步加载数据库数据
		LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ... 
- index首页加载数据库数据方法
		https://blog.csdn.net/qq_33198758/article/details/82987805 在做网站的时候,会遇到需要首页加载数据库数据的情况.而web.xml配置的首页: ... 
- js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据
		防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如 ... 
- Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页
		1.关于LigerUI: LigerUI 是基于jQuery 的UI框架,其核心设计目标是快速开发.使用简单.功能强大.轻量级.易扩展.简单而又强大,致力于快速打造Web前端界面解决方案,可以应用于. ... 
- webdriver 启动chrome时加载配置
		Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome配置的方法: 一.加载所有Chrome配置 用Chrom ... 
- selenium启动firefox时加载扩展
		有些时候,我们测试需要用到插件或者已经导入的证书(比如金融和安全加密行业),而selenium启动firefox时会打开一个新的,不含有任何插件和个人证书的firefox(等同于全新安装后第一次打开的 ... 
- 依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?
		原文:https://blog.csdn.net/u012345283/article/details/39558537 原文:https://blog.csdn.net/wandrong/artic ... 
随机推荐
- Android 开发技术流程
			1.网络连接通信 HttpClient 类通信(见<第一行代码> 郭霖2014.8月第一版P385) Android Asynchronous Http Client (见 http: ... 
- Hdu1090
			#include <stdio.h> int main() { int i,T,a,b; scanf("%d",&T); ;i<T;i++){ scanf ... 
- 黑马程序员 1、C语言32个关键字整理分类
			------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ C语言一共有32个关键字 一.数据类型关键字(共20个) A.基本数据类型(5个)void :声明 ... 
- 锁机制与原子操作 <第四篇>
			一.线程同步中的一些概念 1.1临界区(共享区)的概念 在多线程的环境中,可能需要共同使用一些公共资源,这些资源可能是变量,方法逻辑段等等,这些被多个线程共用的区域统称为临界区(共享区),临界区的资源 ... 
- 年度钜献,108个大数据文档PDF开放下载
			1.大数据的开放式创新——吴甘沙 相关阅读:[PPT]吴甘沙:让不同领域的数据真正流动.融合起来,才能释放大数据的价值 下载:大数据的开放式创新——吴甘沙.pdf 2.微软严治庆——让大数据为每个人服 ... 
- HDU 5775 Bubble Sort(线段树)(2016 Multi-University Training Contest 4 1012)
			原址地址:http://ibupu.link/?id=31 Problem Description P is a permutation of the integers from 1 to N(ind ... 
- PKU 3667 Hotel(线段树)
			Hotel The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a ... 
- 剑指offer-面试题20.顺时针打印矩阵
			题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如: 输入一个矩阵如下: 则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 这道题的 ... 
- windows多线程没那么难
			windows多线程没那么难 作者:vpoet mail:vpoet_sir@163.com 上一博文中我们引入了CreateThread()多线程编程一个简单的例子,事实上我说windows 多线程 ... 
- Can you find it?                                                    分类:            二分查找             2015-06-10 19:55    5人阅读    评论(0)    收藏
			Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need t ... 
