小编这次要给大家分享的是如何实现Spring监听器和定时任务,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

背景:在原SSM项目中,拟定在每晚的23:59:59执行一个批处理任务。

设计思路:用jdk自带的定时器触发任务执行,设置下次执行间隔为24小时。定时任务由spring的监听器去启动。

jdk版本:1.8.0

上代码

web.xml,添加监听

<listener> <listener-class>com.test.listener.Listener</listener-class> </listener>

添加监听类

import com.test.timmer.TimmerTest;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import java.util.Calendar;import java.util.Timer;public class Listener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { System.out.println("启动监听。。。。。。。。。。。。。。。。。"); //定时器 Timer timer = new Timer(); //定时任务对象 TimmerTest task = new TimmerTest(); //指定到23:59:59 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY,23); calendar.set(Calendar.MINUTE,59); calendar.set(Calendar.SECOND,59); //每天的23:59:59秒执行任务,下次执行延迟时长为24小时 timer.schedule(task, calendar.getTime(), 24*60*60*1000); } public void contextDestroyed(ServletContextEvent sce) { }}

添加定时任务实例,jdk的定时任务类需继承 java.util.TimerTask 抽象类

package com.test.timmer;import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimerTask;public class TimmerTest extends TimerTask { public void run() { Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); System.out.println(sdf.format(new Date())+",执行定时任务"); }}

看完这篇关于如何实现Spring监听器和定时任务的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。