思路:实现一个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>