您的位置:首页 > 数据库

SSM项目启动时访问数据库

2015-07-01 00:00 489 查看
摘要: 有时候我们需要在SSM项目启动时访问数据库,读取初始化配置或者初始化缓存

思路:实现一个ServletListener,在web.xml中添加到ContextLoaderListener之后。listener中通过下文getBean,获取SqlSessionTemplate实例,调用mapperid。

关键在于通过上下文获取SqlSessionTemplate实例。这里介绍两种方法:

1、实现ApplicationContextAware接口。

import java.util.List;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class MyListener implements ServletContextListener,ApplicationContextAware{

/**
* 当前IOC
*/
private static ApplicationContext applicationContext;

/**
* 设置当前上下文环境,此方法由spring自动装配
*/
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
applicationContext = arg0;
}

@Override
public void contextInitialized(ServletContextEvent sce) {
SqlSessionTemplate sst = (SqlSessionTemplate)applicationContext.getBean("sqlSession");
List<SystemConfig> list = sst.selectList("selectAllCfgs");
//TODO操作数据
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}

注意要在类声明时加上@Component注解

2、WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)。

import java.util.List;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class MyListener implements ServletContextListener {

@Override
public void contextInitialized(ServletContextEvent sce) {
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(sce.getServletContext());
SqlSessionTemplate sst = (SqlSessionTemplate) context.getBean("sqlSession");
List<SystemConfig> list = sst.selectList("selectAllByMap");
//TODO操作数据
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
}

}


web.xml

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>**.MyListener</listener-class>
</listener>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: