`
yunzhongxia
  • 浏览: 639935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring调度任务

阅读更多

         应用场景:每月10号,我们都会收到本月薪资的邮件;托管行会在每天早上发送可用头寸表。这些事情都不是用户动作引起的,而是系统根据任务调度规划引发的一些动作。

       1 使用Java Timer调度任务

       从jdk1.3开始,java.util.Timer类提供了基本的调度功能。这个类允许你调用一个任务(java.util.TimerTask子类定义)按任意周期运行。

      Spring通过TimerFactoryBean向应用程序上下文提供对java Timer的支持。TimerFactoryBean是Spring的一个工厂类,用于在应用程序上下文(运行TimerTask的)中生成Java Timer。下面展示了TimerFactoryBean是如何工作的。

 

       创建一个定时任务

      

public class ScanFileTask extends TimerTask {

	public void run() {
		System.out.println("开始扫描文件了");
		         }

}

 

run()方法定义了当任务运行时该做什么。

在spring的配置文件中配置该bean。

<bean id="scanFileTask" class="org.utmost.jms.ScanFileTask"/>

 spring的 ScheduledTimerTask定义了定时器任务运行周期period。delay属性指定当任务第一次运行之前等待多长时间。timerTask告诉ScheduledTimerTask执行那个TimerTask。

 

<bean id="testTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
     	<property name="timerTask" ref="scanFileTask"></property>
     	<property name="period" value="40000"/>
     	<property name="delay" value="10000"/>
     </bean>

最后一步就是启动定时器了。

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

 scheduledTimerTasks是一个需要启动定时器的列表。

 

遗憾的是,java Timer的一个局限性,你可以指定执行任务的频度,但你无法精确指定它何时运行。Quartz能够指定时间运行。

  • 大小: 6.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics