web项目启动时可能需要启动一些定时任务 或者一些其他的方法,这里我使用的是listener, 因为容器启动listener时spring还未完成加载, 所以无法自动注入对象

java代码

Java代码 复制代码 收藏代码
  1. package cn.resoft.dmps.plan.task;
  2.  
  3. import javax.servlet.ServletContextEvent;
  4. import javax.servlet.ServletContextListener;
  5.  
  6. import org.springframework.context.ApplicationContext;
  7. import org.springframework.web.context.support.WebApplicationContextUtils;
  8.  
  9. import cn.resoft.dmps.plan.service.TaskMain;
  10.  
  11. public class TimerStartTask implements ServletContextListener {
  12.  
  13. private TaskMain taskMain;
  14.  
  15. public void contextInitialized(ServletContextEvent event) {
  16. ApplicationContext applicationContext = WebApplicationContextUtils
  17. .getWebApplicationContext(event.getServletContext());
  18. taskMain = (TaskMain) applicationContext.getBean("taskMain");
  19. if (null == taskMain) {
  20. taskMain = new TaskMain();
  21. }
  22. taskMain.startTimer(applicationContext);
  23. }
  24.  
  25. public void contextDestroyed(ServletContextEvent sce) {
  26.  
  27. }
  28.  
  29. }
package cn.resoft.dmps.plan.task;

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

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

import cn.resoft.dmps.plan.service.TaskMain;

public class TimerStartTask implements ServletContextListener {

	private TaskMain taskMain;

	public void contextInitialized(ServletContextEvent event) {
		ApplicationContext applicationContext = WebApplicationContextUtils
				.getWebApplicationContext(event.getServletContext());
		taskMain = (TaskMain) applicationContext.getBean("taskMain");
		if (null == taskMain) {
			taskMain = new TaskMain();
		}
		taskMain.startTimer(applicationContext);
	}

	public void contextDestroyed(ServletContextEvent sce) {

	}

}