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:启动项目时加载数据库数据(总结)

时间: 2024-10-18 13:52:57

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

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

一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2在js中用keyup事件来进行操作 3创建ajax格式和内容:格式: $.ajax({ url:"哪一个服务端处理器", data:{"自己起名",所需要传给处理器的数据}, type:"post", dataType:"json"

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

LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好,Android为来解决这个问题,就设计了LoaderManager异步加载数据库数据 以前我在深圳做项目的时候,公司研发的APP是给中国联通人员在山上工作办事的,对这款APP要求离线数据,大量的离线数据(成百上千条)都是存储在本地Database表里面的,常常在查询本地Database数据的时候,

ext combobox动态加载数据库数据

前台: var provinceStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: basePath + "/stationManage/station_getProvinceJSON.action" }), reader: new Ext.data.JsonReader( { root: "" }, ["PROVINCEID", "PROVINCENAME

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面 从数据库中查询仓库信息,显示在下拉菜单中: 首先,引入js插件,这里使用jquery-1.8.3.js <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script> 当页面加载完成后,就应该发送ajax请求到数据库,

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

防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如果时间内又执行了该操作则延长时间重新开始计算 /* 不做处理input触发keyup事件 */ /* 输入快的话会出现输出结果多次重复 */ window.onload = function () { let obj = document.getElementById('input') obj.ad

C#在窗口中ComboBox控件中加载数据库数据

首先,窗体一加载,绑定省份和城市数据 //窗口加载事件 private void register_Load(object sender, EventArgs e) { bindPro();//绑定省份数据函数 } /// <summary> /// 绑定省份数据函数 /// </summary> public void bindPro() { //获取数据库数据 List<ProvinceData> list = new ProvinceDA().Select();

webdriver 启动chrome时加载配置

Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome配置的方法:  一.加载所有Chrome配置 用Chrome地址栏输入chrome://version/,查看自己的"个人资料路径",然后在浏览器启动时,调用这个配置文件,代码如下: #coding=utf-8 from selenium import webdriver option = webdriver.ChromeOptions() op

selenium启动firefox时加载扩展

有些时候,我们测试需要用到插件或者已经导入的证书(比如金融和安全加密行业),而selenium启动firefox时会打开一个新的,不含有任何插件和个人证书的firefox(等同于全新安装后第一次打开的那个firefox)这种情况下,我们就要用firefoxprofile了. 我们需要先新建一个profile或者直接使用默认,最快捷的方法就是把默认的profile拷贝一份出来. 关于firefox的profile,官网有介绍,点击这里查看. 使用特定Profile启动,使用FirefoxDrive

IDEA创建maven项目时加载慢的解决办法

配置实用本地maven配置文件