网站大量收购闲置独家精品文档,联系QQ:2885784924
  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
springtask.

9.3 任务计划服务 对于任务计划定时执行的工作,JDK 的标准API 提供有java.util.Timer 与java.util.TimerTask 类,Spring 则对它提供了抽象封装,让您可以善用Spring 的容器管理功能,然而Timer 功能有限,只能指定任务与任务之间的周期(Period ),无法指定某个时间点定时执行任务,您可以使用Quartz(/quartz/),它提供了更多的任务计划功能,而Spring 对Quartz 进行了封装,在使用上更加方便。 9.3.1 使用TimerTask 要定义一个计划任务(Task ),可以继承java.util.TimerTask类,例如: TimerTaskDemo DemoTask.java 接着可以使用Spring 的org.springframework.scheduling.timer. ScheduledTimerTask 来定义任务的执行周期,例如: TimerTaskDemo beans-config.xml ?ref bean=scheduledTimerTask/ ?/list ?/property ?/bean ?/beans? 在ScheduledTimerTask 类的period 属性中,定义的单位是毫秒,因此根据以上的定义,将每60 分钟执行一次所定义的任务,而delay 属性定义了Timer 启动后,第一次执行任务前要延迟多少毫秒。 定义好的ScheduledTimerTask 要使用org.springframework.scheduling.timer. TimerFactoryBean类来加入所有的计划任务,接下来只要Spring 容器启动读取完定义文件,就会开始进行所排定的任务,例如: TimerTaskDemo TimerTaskDemo.java 根据Bean 定义文件的内容,这个程序在启动后10 秒会执行第一次任务,之后每60 分钟执行一次任务。 9.3.2 使用MethodInvokingTimerTaskFactoryBean 使用Spring 时,并不一定要继承TimerTask 来定义一个任务,Spring 提供org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean,可以直接指定执行某个对象的方法,例如可以改写一下TimerTaskDemo 项目中的DemoTask 类,这次不用继承TimerTask 类: TimerTaskDemo2 DemoTask.java 接着在Bean 定义文件中使用MethodInvokingTimerTaskFactoryBean即可,例如: TimerTaskDemo2 beans-config.xml ??? bean id=scheduledTimerTask ??????????? class=org.springframework.scheduling. → timer.ScheduledTimerTask ???????? property name=timerTask ref bean=timerTaskBean/ ???????? /property ??? property name=period value5000/value ???????? /property? ?????? property name=delay value1000/value ???????? /property ??? /bean ??? bean id=timerFactoryBean ?????????? class=org.springframework.scheduling. → timer.TimerFactoryBean ???????? property name=scheduledTimerTasks ?list ? ref bean=scheduledTimerTask/ ?/list ?????? /property ??? /bean ?/beans 执行时可以直接使用TimerTaskDemo 项目中的TimerTaskDemo 类,在底层, MethodInvokingTimerTaskFactoryBean会自动建立TimerTask 的实例以执行目标对象上的指定方法。 9.3.3 使用Quartz JDK 标准API 中所提供的Timer 功能有限,只能指定任务与任务之间的周期(Period), 无法指定某个时间点来定时执行任务,您可以使用Quartz(/quartz/), 它提供了更多的任务计划功能,而Spring 则对Qu

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档