Spring对Timer的支持的核心是由ScheduledTimerTask和TimerFactoryBean类组成的。
ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。使用
TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask
bean自动创建Timer实例。
1、自定义timerTask,比如:定时输出ServletContext中的信息,本例中输出项目的绝对路径(比如:D:\software\apache-tomcat-6.0.33\webapps\spring\)
public class BirthdayReminderTimerTask extends TimerTask implements ServletContextAware{
/*通过实现ServletContextAware可获得servletContext*/
private ServletContext servletContext;
private static Logger logger = Logger.getLogger(BirthdayReminderTimerTask.class);
@Override
public void run() {
// logger.debug("BirthdayReminderTimerTask is running");
setServletContext(servletContext);
try {
System.out.println(this.servletContext.getRealPath("/"));
} catch (Exception e) {
e.printStackTrace();
}
}
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
}
2、在spring的bean配置文件中配置,当系统加载该文件时,配置的定时器将自动启动,同时被spring管理。
<!--自定义任务-->
<bean id="birthdayReminder" class="com.jep.task.BirthdayReminderTimerTask"></bean>
<!-- ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。 -->
<bean id="birthdayReminderTimerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- 设置启动延迟 -->
<property name="delay">
<value>3000</value>
</property>
<!-- 后续延迟 -->
<property name="period">
<value>5000</value>
</property>
<!-- 指定触发器信息 -->
<property name="timerTask">
<ref local="birthdayReminder" />
</property>
</bean>
<!-- 使用TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask bean自动创建Timer实例。 -->
<bean id="timerFactory"
class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="birthdayReminderTimerTask" />
</list>
</property>
</bean>
3、对于web项目,需要在web.xml中进行如下配置
<!-- Spring ApplicationContext配置文件的路径此参数用于后面的Spring-Context loader -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<!--Spring ApplicationContext 载入 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
分享到:
相关推荐
利用jdk中的timer和timertask来实现,每天定时执行的任务。
环境MyEclipse,tomcat,jdk Spring2定时任务 定时触发
主要介绍了Spring整合TimerTask实现定时任务调度的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
timerTask实现每天定时一段时间内执行定时任务,这个是自己写的代码,有些和我的项目有关,可以删掉,但是其主要的都在里面,我写了注释。
两种方式实现定时执行任务操作,通过spring中集成的timerTask,包含源码及用到的jar包
工作中常常会有定时任务的开发需求,特别是移动端。最近笔者正好有所涉及,鉴于此,结合开发中的案例说明一下几种定时任务的 退出 。 需求说明 :定时更新正在生成的文件大小和状态【进行中、失败、完成】,如果...
在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后 ...发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
spring + jdk TimerTask定时器 完整可运行
spring 定时器 内含TimerTask实现和Quartz实现两种方式
NULL 博文链接:https://zhujianpengzha.iteye.com/blog/1714713
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。 我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量...
这是一个自动创建文件夹的定时任务,并且使用java代码直接操纵svn上传,无需手动操纵svn。内容仅供大家参考学习,本人不是高手,若有不足之处请大家见谅,并请大家提出宝贵意见,谢谢!
我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...
所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间...在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。
主要介绍了Java 中Timer和TimerTask 定时器和定时任务使用的例子,非常具有实用价值,需要的朋友可以参考下
TimerTask结合Handler实现了定时任务,可以定时刷新,定时验证短信等.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
应用程序想要定时执行某个操作,例如按计划定时更新UI。
所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 J2SE或者 J2ME 日历应用程序需要根据用户的约定计划闹铃时间。不过,标准的调度类 Timer 和 ...
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1199750
它是用来执行任务的类,接收一个TimerTask实例作为参数。通常,Timer类有两种执行任务的模式。最常用的是schedule模式,它可以通过两种方式执行任务:在某个特定时刻开始执行任务;从当前时刻开始,在某个固定时段...