首页 > 代码库 > Spring:启动项目时加载数据库数据(总结)
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); }}
这种方式只加载一次,比较方便
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。