Spring + JDK Timer Scheduler Example--reference

http://www.mkyong.com/spring/spring-jdk-timer-scheduler-example/

In this example, you will use Spring’s Scheduler API to schedule a task.

1. Scheduler Task

Create a scheduler task…

package com.mkyong.common;
 
public class RunMeTask
{
	public void printMe() {
		System.out.println("Run Me ~");
	}
}
<bean id="runMeTask" class="com.mkyong.common.RunMeTask" />

Spring comes with a MethodInvokingTimerTaskFactoryBean as a replacement for the JDK TimerTask. You can define your target scheduler object and method to call here.

<bean id="schedulerTask"
  class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
	<property name="targetObject" ref="runMeTask" />
	<property name="targetMethod" value="printMe" />
</bean>

Spring comes with a ScheduledTimerTask as a replacement for the JDK Timer. You can pass your scheduler name, delay and period here.

<bean id="timerTask"
	class="org.springframework.scheduling.timer.ScheduledTimerTask">
	<property name="timerTask" ref="schedulerTask" />
	<property name="delay" value="1000" />
	<property name="period" value="60000" />
</bean>

2. TimerFactoryBean

In last, you can configure a TimerFactoryBean bean to start your scheduler task.

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
	<property name="scheduledTimerTasks">
		<list>
			<ref local="timerTask" />
		</list>
	</property>
</bean>

File : Spring-Scheduler.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 
<bean id="schedulerTask"
  class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
	<property name="targetObject" ref="runMeTask" />
	<property name="targetMethod" value="printMe" />
</bean>
 
<bean id="runMeTask" class="com.mkyong.common.RunMeTask" />
 
<bean id="timerTask"
	class="org.springframework.scheduling.timer.ScheduledTimerTask">
	<property name="timerTask" ref="schedulerTask" />
	<property name="delay" value="1000" />
	<property name="period" value="60000" />
</bean>
 
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
	<property name="scheduledTimerTasks">
		<list>
			<ref local="timerTask" />
		</list>
	</property>
</bean>
 
</beans>

Run it

package com.mkyong.common;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class App
{
    public static void main( String[] args )
    {
    	ApplicationContext context =
		  new ClassPathXmlApplicationContext("Spring-Scheduler.xml");
    }
}

No code need to call the scheduler task, the TimerFactoryBean will run your schedule task during start up. As result, Spring scheduler will run the printMe() method every 60 seconds, with a 1 second delay for the first time of execution.

时间: 2024-10-10 16:48:29

Spring + JDK Timer Scheduler Example--reference的相关文章

Spring 中使用 JDK Timer

在 Java 1.3 以后的版本中,通过 java.util.Timer 和 java.util.TimerTask 这两个类提供了简单的任务调度功能,称之为 Java Timer.Java Timer 允许按照固定频率重复执行某项任务,这比直接通过编写底层线程程序进行任务调度要轻松许多,但是对于诸如“在每周周一8:00执行”这种和日历相关的任务调度需求来说,Java Timer 就无能为力了. 此外,JDK Timer 只适合对执行时间非常短的任务进行调度,因为在 Timer 中所有的 Tim

SSH系列:(28)JDK Timer和Quartz

常见的任务调度有Jdk 的Timer 以及 spring中quartz任务调度框架等. 1.JDK Timer 如果是执行简单的有一定执行周期的,那么使用jdk自带的timer是最简单的. 具体步骤: ①.编写一个简单类继承 TimerTask,在这个新编写的类中重写父类中run方法,在run中执行要执行的操作: ②.编写一个简单类,在类中写一个方法,方法体中使用timer调用在①中创建的类并设置好timer执行周期. MyTask.java package com.rk.test; impor

JDK 源码阅读 Reference

Java最初只有普通的强引用,只有对象存在引用,则对象就不会被回收,即使内存不足,也是如此,JVM会爆出OOME,也不会去回收存在引用的对象. 如果只提供强引用,我们就很难写出"这个对象不是很重要,如果内存不足GC回收掉也是可以的"这种语义的代码.Java在1.2版本中完善了引用体系,提供了4中引用类型:强引用,软引用,弱引用,虚引用.使用这些引用类型,我们不但可以控制垃圾回收器对对象的回收策略,同时还能在对象被回收后得到通知,进行相应的后续操作. 引用与可达性分类 Java目前有4中

quartz任务调度学习一

1.实现定时任务的几种方式: crontab 命令 + sql语句 python脚本 + sql语句 spring + JDK Timer spring + Quartz 2.Quartz概述: Quartz是java领域中最著名的定时任务调度工具,具有以下特性: 强大的调度功能 灵活的应用方式 负载均衡 高可用特性 易于spring集成 3.基础概念: Quartz 任务调度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任务调度的元数据,

项目中使用Quartz集群分享--转载

项目中使用Quartz集群分享--转载 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享  一:CRM对定时任务的依赖与问题  二:什么是quartz,如何使用,集群,优化  三:CRM中quartz与Spring结合使用 1:CRM对定时任务的依赖与问题  1)依赖  (1)每天晚上的定时任务,通过sql脚本 + crontab方式执行 Xml代码   #crm 0 2 * * * /opt/***/javafiles/***/shell/***_dail

Spring 3 + Quartz 1.8.6 Scheduler Example--reference

In this tutorial, we will show you how to integrate Spring with Quartz scheduler framework. Spring comes with many handy classes to support Quartz, and decouple your class to Quartz APIs. Tools Used : Spring 3.1.2.RELEASE Quartz 1.8.6 Eclipse 4.2 Mav

《Spring 3.x 企业应用开发实战》目录

图书信息:陈雄华 林开雄 编著 ISBN 978-7-121-15213-9 概述: 第1章:对Spring框架进行宏观性的概述,力图使读者建立起对Spring整体性的认识. 第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界. 第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念.同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行讲解. 第4章:讲解如何

spring 定时任务@Scheduled

1.配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org

Atitit.spring体系结构大总结

1. Srping mvc 1 2. Ioc 4 3. ApplicationContext在BeanFactory的基础上构建,区别 4 4. Aop 5 5. 3.2.4.1. @AspectJ形式的SpringAOP 5 6. spring的定时器 6 7. spring的事务处理 6 8. spring与struts的整合 6 9. spring与hibernate的整合 6 10. spring的持久层封装 使用jdbctemptate访问数据 6 11. 2.3.1.3.7. 方法注