直接上代码
1.定时器监听
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ContextListener implements ServletContextListener {
private java.util.Timer timer = null;
@Override
public void contextInitialized(ServletContextEvent event) {
// TODO Auto-generated method stub
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
//MyTask 定时器执行类
//60*60*1000 60*60*1000毫秒=1小时 每小时执行
timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);
event.getServletContext().log("已经添加任务调度表");
}
@Override
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
2.配置监听到web.xml
<listener>
<listener-class>com.***.util.ContextListener</listener-class>
</listener>
3.定时器执行
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
@Service
public class MyTask extends TimerTask{
private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
//启动Spring
//SpringContextUtil Spring注入Util
ApplicationContext appCtx = SpringContextUtil.getApplicationContext();
//获取要执行的Service
******Service ******Service = (******Service)SpringContextUtil.getBean(******Service.class);
******Service ******Service = (******Service)SpringContextUtil.getBean(******Service.class);
public MyTask(ServletContext context) {
this.context = context;
}
public void run() {
Calendar cal = Calendar.getInstance();
if (!isRunning) {
if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {
isRunning = true;
context.log("开始执行指定任务");
// TODO 添加自定义的详细任务
******************
isRunning = false;
context.log("指定任务执行结束");
}
} else {
context.log("上一次任务执行还未结束");
}
}
}
4.SpringUtil.
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
public static Object getBean(String beanName){
return applicationContext.getBean(beanName);
}
public static Object getBean(Class c){
return applicationContext.getBean(c);
}
}
5.配置bean到xml
<bean id="springContextUtil" class="com.***.util.SpringContextUtil"></bean>
完成