zoukankan      html  css  js  c++  java
  • 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);
            
        }
    }

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

  • 相关阅读:
    如何查找本地的ip
    jQuery解析AJAX返回的html数据时碰到的问题与解决
    angularjs之ng-bind和ng-model
    nodejs配置及cmd常用操作
    ID属性值为小数
    DOM对象
    js跨域问题
    加载图片失败,怎样替换为默认图片
    常用前端 网址
    echart字符云之添加点击事件
  • 原文地址:https://www.cnblogs.com/volare/p/3922540.html
Copyright © 2011-2022 走看看