关闭

利用ServletContextListener 获取spring上下文

标签: spring服务器需求数据j2ee
5147人阅读 评论(0) 收藏 举报
分类:

需求是当服务器启动后加载一些数据,我们就可以使用ServletContextListener来满足需求

传统方式

app = new ClassPathXmlApplicationContext("xxx.xml");

这样获取是不可以的,当j2ee容器启动后会或获取一次spring上下文,如果使用该方式会在一次获取上下文。自己想想就知道。

ServletContextListener 不受spring管理我们应该如何获取呢?

实际上spring同样使用了ServletContextListener接口,我们可以通过实现一个自己ServletContextListener

来得到spring上下文。

代码如下:

package com.xiaomaha.config;  

import java.util.List;  

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

import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
import org.springframework.web.context.support.WebApplicationContextUtils;  

public class InitialData implements ServletContextListener {  

    private static List dataList;  

    private ApplicationContext app;  

    public static List getDataList() {  
        return dataList;  
    }  

    public static void setDataList(List dataList) {  
        InitialData.dataList = dataList;  
    }  

    public void contextDestroyed(ServletContextEvent arg0) {  
        // TODO Auto-generated method stub  

    }  

    public void contextInitialized(ServletContextEvent event) {  
        //获取spring上下文!  
        app = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext()); 
        //获取到bean了,你就可以任意搞它了,想怎么搞就怎么搞
        app.getBean("UserService");   
        .............  
        //!最后得到的数据传递给dataList引用就O了!  
    }  

}  

然后在web.xml配置一句

<listener>  
    <listener-class>  
        包+类名  
    </listener-class>  
</listener>  

好了自己写一个类,在构造函数(一般spring都是配置构造函数,当然你也可以使用其它方法)里打印一句话,你可以看看服务器启动后是否会执行两次?

技术交流学习或者有任何问题欢迎加群:154514123

这里写图片描述

0
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

spring+mybatis利用interceptor(plugin)兑现数据库读写分离

使用spring的动态路由实现数据库负载均衡 系统中存在的多台服务器是“地位相当”的,不过,同一时间他们都处于活动(Active)状态,处于负载均衡等因素考虑,数据访问请求需要在这几台数据库服务器...
  • keda8997110
  • keda8997110
  • 2013-11-19 17:04
  • 24669

利用ServletContextListener 获取spring上下文

你的需求是当服务器启动后加载一些数据,我们就可以使用ServletContextListener来满足需求 传统方式app = new ClassPathXmlApplicationContext(...
  • judyfun
  • judyfun
  • 2016-09-02 15:23
  • 993

浅析servlet的ServletContextListener与Spring的ApplicationListner

1. 简单剖析JSP中session、appliactioon创建过程 在JSP中使用的session、application、pageContext的创建其实是在Servlet容器中实现的,JSP...
  • ErErFei
  • ErErFei
  • 2015-07-14 11:42
  • 3712

在ServletContextListener实现类中获取spring注入对象

由于项目需要,需在ServletContextListener监听接口实现类中调用spring注入的对象,以获取系统初始化参数.代码如下:   import java.io.IOException...
  • qbg19881206
  • qbg19881206
  • 2013-05-30 16:08
  • 7375

Spring加载applicationContext.xml应用上下文的方式

Spring加载ApplicationContext.xml应用上下文的方式
  • chenlong220192
  • chenlong220192
  • 2015-07-02 09:22
  • 1856

SpringBoot-获取上下文

SpringBoot-获取上下文 1.创建上下文工具类SpringContextUtil,如下为简单的上下文工具类,可以根据自己的需要添加上下文相关的管理方法。 package com.supre...
  • cb2474600377
  • cb2474600377
  • 2016-12-30 09:04
  • 6190

利用ServletContextListener 获取spring上下文

你的需求是当服务器启动后加载一些数据,我们就可以使用ServletContextListener来满足需求 传统方式app = new ClassPathXmlApplicationContext(...
  • judyfun
  • judyfun
  • 2016-09-02 15:23
  • 993

在ServletContextListener实现类中获取spring注入对象

由于项目需要,需在ServletContextListener监听接口实现类中调用spring注入的对象,以获取系统初始化参数.代码如下:   [java] view ...
  • z69183787
  • z69183787
  • 2017-12-19 18:09
  • 166

web上下文监听器ServletContextListener

这个J2EE小提示阐述了ServletContextListener的用法。这个事件类作为Web应用服务的一部分,处理Web应用的 servlet上下文(context)的变化的通知。这可以解释为,好...
  • zhangrongchao_
  • zhangrongchao_
  • 2015-05-25 10:41
  • 1287

利用Spring Context上下文创建自定义对象

  • 2014-07-04 19:34
  • 2.72MB
  • 下载
    Java技术交流群:6128790
    微信
    编程技术学习交流群 :154514123
    微信
    个人资料
    • 访问:590137次
    • 积分:8283
    • 等级:
    • 排名:第2816名
    • 原创:311篇
    • 转载:34篇
    • 译文:2篇
    • 评论:110条
    最新评论