ServletContextListener接口在Spring中的实现
来源:互联网 发布:淘宝直通车在哪儿 编辑:程序博客网 时间:2024/06/06 12:36
当web容器加载时初始化操作
通常程序的数据库中会有常量表。对这些表数据,我们一般会有很多地方要对其进行查询操作,但是单独查一个常量进行一次数据库连接的话,显然有点多余。
因此,我们可以实现ServletContextListener接口,在其的contextInitialized()
方法中实现在容器加载的时候查询一次,将其的所有数据都取出放入内存中。
/** * 当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后,容器再对Filter 初始化, * 并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。 */ contextInitialized(ServletContextEvent sce)
话不多说,直接上代码:
public class InitAppkeyListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } @Override public void contextInitialized(ServletContextEvent arg0) { // TODO Auto-generated method stub try { CallerAppkeyDao callerAppkeyDao = SpringFactory.getBean(CallerAppkeyDao.class); List<CallerAppkey> list = callerAppkeyDao.queryAppkeyList(); arg0.getServletContext().setAttribute(Const.APPKEY_LIST, list); AppkeyUtils.sc = arg0;//查询到的数据存放进工具类的静态属性中 } catch (Exception e) { e.printStackTrace(); } } }
然后需要在web.xml 中进行如下配置,以使得该监听器可以起作用:
<listener> <listener-class>com.main.open.common.InitAppkeyListener</listener-class> </listener>
当和spring组合使用时,需要在spring的配置文件中配置:
<!-- 配置 BeanFactoryAwarebean --> <bean id="springFactory" class="com.main.open.utils.SpringFactory" scope="singleton"/>
由SpringFactory在容器加载时取到实体对象。
SpringFactory工具类:
public class SpringFactory implements BeanFactoryAware { private static BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory factory) throws BeansException { SpringFactory.beanFactory = factory; } /** * 根据beanName名字取得bean * * @param beanName * @return */ @SuppressWarnings("unchecked") public static <T> T getBean(String beanName) { if (null != beanFactory) { return (T) beanFactory.getBean(beanName); } return null; } /** * 根据beanName名字取得bean * * @param beanName * @return */ public static <T> T getBean(Class<T> clz) { if (null != beanFactory) { return (T) beanFactory.getBean(clz); } return null; } }
然后你只需要建立一个工具类,就能直接通过这个工具类取到这个表里的数据了。
public class AppkeyUtils { public static ServletContextEvent sc; public static CallerAppkey queryAppkeyByKey(String key) { if (StringUtils.isEmpty(key)) { return null; } if (null != sc) { List<CallerAppkey> list = (List<CallerAppkey>) sc.getServletContext().getAttribute(Const.APPKEY_LIST); for (CallerAppkey callerAppkey : list) { if (key.equals(callerAppkey.getAppkey())) { return callerAppkey; } } } return null; } }
完
阅读全文
0 0
- ServletContextListener接口在Spring中的实现
- Spring源码解读:ServletContextListener接口
- 在ServletContextListener实现类中获取spring注入对象
- 在ServletContextListener实现类中获取spring注入对象
- 在ServletContextListener实现类中获取spring注入对象
- Listener之实现ServletContextListener接口
- ServletContextListener 接口
- ServletContextListener接口
- ServletContextListener接口的实现与应用
- ServletContextListener HttpSessionListener 接口的实现与应用
- ServletContextListener接口需要实现的方法
- ServletContextListener HttpSessionListener 接口的实现与应用
- spring ServletContextListener
- ServletContextListener在Tomcat中的配置问题
- 在ServletContextListener中使用Spring管理的bean
- 关于ServletContextListener接口
- ServletContextListener接口使用
- 怎样使用ServletContextListener接口
- Echarts使用心得(增加全屏按钮,点击一个图另外一个图变化,双环内外环关联,全屏左右切换)
- C++学习5:类的构造函数
- c++ primer(五)
- 找一找 ButterKnife 的不足
- zookeeper——zkCli.sh和JavaAPI(笔记)
- ServletContextListener接口在Spring中的实现
- 双重检查锁定
- web.xml classpath 和 WEB-INF 区别
- C++11带来的随机数生成器
- 如何查看Linux 内核版本
- TensorFlow学习---基础概念和程序的形式
- 常用 Git 命令清单
- Oracle 实用技巧之不知道密码情况下 dblink 的迁移
- HEVC函数入门(6)——帧内预测-详细概念和HM16.3实现(上)