如何在Listener监听中使用spring容器中的内容

来源:互联网 发布:羽毛球训练软件 编辑:程序博客网 时间:2024/05/19 15:20

正常情况下,如果我们在web.xml配置文件中配置了监听

他们的执行顺序是:先加载监听器,然后在初始化spring容器

现在我想在监听器中使用spring的初始化内容

使用了一种变通的方法,如下:

在使用需要的service实现类的时候,先初始化:

做法如下:

在ApplicationContext.xml文件中加入:

 <bean id="userServiceImp" class="cn.zz.lc.service.imp.UserServiceImp"></bean>

UserServiceImp是我的service层的实现类;

在web.xml文件中加入监听配置:

 <listener> 
  <listener-class>cn.zz.lc.listener.SubmitListener</listener-class> 
 </listener>

cn.zz.lc.listener.SubmitListener是我的监听类:

package cn.zz.lc.listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.springframework.context.ApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;import cn.zz.lc.service.imp.UserServiceImp;import cn.zz.lc.util.Constant;import cn.zz.lc.util.ThreadSubmit;public class SubmitListener implements ServletContextListener {private ThreadSubmit ts;@Overridepublic void contextDestroyed(ServletContextEvent arg0) {System.out.println("数据提交,监听中断");if (ts != null && ts.isInterrupted()) {ts.interrupt();}}@Overridepublic void contextInitialized(ServletContextEvent contextEvent) {try {ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(contextEvent.getServletContext());UserServiceImp userService = (UserServiceImp) context.getBean("userServiceImp");           System.out.println("数据提交,监听开始");if (ts == null) {ts = new ThreadSubmit(Constant.queue, userService);ts.start();} else {ts.start();}} catch (Exception e) {System.out.println("系统无法初始化,异常退出");System.out.println(e);}}}


 

原创粉丝点击