SSM项目启动时访问数据库
2015-07-01 00:00
489 查看
摘要: 有时候我们需要在SSM项目启动时访问数据库,读取初始化配置或者初始化缓存
思路:实现一个ServletListener,在web.xml中添加到ContextLoaderListener之后。listener中通过下文getBean,获取SqlSessionTemplate实例,调用mapperid。
关键在于通过上下文获取SqlSessionTemplate实例。这里介绍两种方法:
1、实现ApplicationContextAware接口。
注意要在类声明时加上@Component注解
2、WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)。
web.xml
思路:实现一个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>
相关文章推荐
- mongodb的分布式集群(4、分片和副本集的结合)
- nodejs读取mongodb返回数据到前台页面[object object]异常处理
- PDO 查询mysql返回字段整型变为String型解决方法
- mysql总结
- mongodb的分布式集群(3、分片)
- MySQL 复制 主键冲突
- sql 常用语法
- Oracle安装需要脚本orainstRoot.sh
- mongodb的分布式集群(2、副本集)
- 【HM】第5课:JDBC连接MySQL数据库
- 如何在PL/SQL中修改ORACLE的字段顺序
- 解密Redis持久化
- sqlserver
- ubuntu下mysql建立数据库,建表,搜索
- Haproxy: web前段调用后面的mysql数据,不定期的报错
- MySQL技术内幕-InnoDB存储引擎-读书笔记(二)
- mongodb的分布式集群(1、主从复制)
- 数据库重复写入数据问题处理
- Oracle 11.2.0.2 安装条件检查之pdksh 包
- MySQL 删除重复记录