知识大全 Spring定时器的两种实现方式

Posted 属性

篇首语:人生在勤,不索何获。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring定时器的两种实现方式相关的知识,希望对你有一定的参考价值。

Spring定时器的两种实现方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  有两种流行Spring定时器配置 Java的Timer类和OpenSymphony的Quartz

   Java Timer定时

  首先继承java util TimerTask类实现run方法

  import java util TimerTask;

  public class EmailReportTask extends TimerTask

  @Override

  public void run()

  

  

  

  在Spring定义

  

  配置Spring定时器

  <bean id= scheduleReportTask class= springframework scheduling timer ScheduledTimerTask >

  <property name= timerTask ref= reportTimerTask />

  <property name= period >

  <value> value>

  property>

  bean>

  timerTask属性告诉ScheduledTimerTask运行哪个 代表 个小时

  启动Spring定时器

  Spring的TimerFactoryBean负责启动定时任务

  <bean class= springframework scheduling timer TimerFactoryBean >

  <property name= scheduledTimerTasks >

  <list><ref bean= scheduleReportTask />list>

  property>

  bean>

  scheduledTimerTasks里显示一个需要启动的定时器任务的列表

  可以通过设置delay属性延迟启动

  <bean id= scheduleReportTask class= springframework scheduling timer ScheduledTimerTask >

  <property name= timerTask ref= reportTimerTask />

  <property name= period >

  <value> value>

  property>

  <property name= delay >

  <value> value>

  property>

  bean>

  这个任务我们只能规定每隔 小时运行一次 无法精确到某时启动

   Quartz定时器

  首先继承QuartzJobBean类实现executeInternal方法

  import quartz JobExecutionContext; import quartz JobExecutionException; import springframework scheduling quartz QuartzJobBean;

  public class EmailReportJob extends QuartzJobBean

  protected void executeInternal(JobExecutionContext arg )

  throws JobExecutionException

  

  

  

  在Spring中定义

  <bean id= reportJob class= springframework scheduling quartz JobDetailBean >

  <property name= jobClass >

  <value>EmailReportJobvalue>

  property>

  <property name= jobDataAsMap >

  <map>

  <entry key= courseService >

  <ref bean= courseService />

  entry>

  map>

  property>

  bean>

  在这里我们并没有直接声明一个EmailReportJob Bean 而是声明了一个JobDetailBean 这个是Quartz的特点 JobDetailBean是Quartz的 quartz JobDetail的子类 它要求通过jobClass属性来设置一个Job对象

  使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的 JobDetail的jobDataAsMap属性接受一个Map 包括设置给jobClass的各种属性 当 JobDetailBean实例化时 它会将courseService Bean注入到EmailReportJob 的courseService 属性中

  启动定时器

  Quartz的 quartz Trigger类描述了何时及以怎样的频度运行一个Quartz工作 Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean

  SimpleTriggerBean与scheduledTimerTasks类似 指定工作的执行频度 模仿scheduledTimerTasks配置

  <bean id= simpleReportTrigger class= springframework scheduling quartz SimpleTriggerBean >

  <property name= jobDetail ref= reprotJob />

  <property name= startDelay >

  <value> value>

  property>

  <property name= repeatInterval >

  <value> value>

  property>

  bean>

  startDelay也是延迟 个小时启动

  CronTriggerBean指定工作的准确运行时间

  <bean id= cronReportTrigger class= springframework scheduling quartz CronTriggerBean >

  <property name= jobDetail ref= reprotJob />

  <property name= cronExpression >

  <value> * * ?value>

  property>

  bean>

  属性cronExpression告诉何时触发 最神秘就是cron表达式

  Linux系统的计划任务通常有cron来承担 一个cron表达式有至少 个(也可能 个)有空格分隔的时间元素 从左到右

   秒 分 小时 月份中的日期( ) 月份( 或JAN DEC) 星期中的日期( 或SUN SAT) 年份( )

  每个元素都显示的规定一个值(如 ) 一个区间( ) 一个列表( )或一个通配符(*) 因为 和 这两个元素是互斥的 因此应该通过设置一个问号(?)来表明不想设置的那个字段 / 如果值组合就表示重复次数( / 表示每 秒重复 次)

  启动定时器

  <bean class= springframework scheduling quartz SchedulerFactoryBean >

  <property name= triggers >

  <list><ref bean= cronReportTrigger />list>

  property>

  bean>

cha138/Article/program/Java/hx/201311/26716

相关参考

知识大全 Java与Oracle的两种连接方式

Java与Oracle的两种连接方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一种方式通

知识大全 Spring定时器的使用

Spring定时器的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面我们来看看关于Spr

知识大全 VB中文件操作的两种方式

VB中文件操作的两种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文本文件的操作  此种方

知识大全 进入RMAN恢复管理器的两种方式

进入RMAN恢复管理器的两种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  进入RMAN恢复

鱼鳞病常见的两种遗传方式

我们都知道鱼鳞病是一种皮肤干燥病症,很多患者都单纯的认为这是一种常见的皮肤病,殊不知鱼鳞病其实还是一种遗传疾病,因此做为鱼鳞病患者要特别注意这种疾病的遗传性。下面我们就和大家了解一下鱼鳞病常见的两种遗

知识大全 C#多线程操作控件的两种安全方式

C#多线程操作控件的两种安全方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实现的功能是  

知识大全 介绍java 产生随机数的两种方式

   在java中我们可以通过两种方式来获取随机数(generatingarandomnumber)一种是大家熟悉的javalangMathRandom()静态方法另一种

鱼鳞病遗传的两种方式

鱼鳞病会遗传但不会传染,说到遗传对于准妈妈或准爸爸来说是比较担心的问题,他们都不希望自己的孩子刚生下来就受鱼鳞病的折磨,鱼鳞病这类皮肤病的遗传主要是染色体的基因异常所导致的,那么鱼鳞病的遗传方式有哪些

鱼鳞病遗传的两种方式

鱼鳞病会遗传但不会传染,说到遗传对于准妈妈或准爸爸来说是比较担心的问题,他们都不希望自己的孩子刚生下来就受鱼鳞病的折磨,鱼鳞病这类皮肤病的遗传主要是染色体的基因异常所导致的,那么鱼鳞病的遗传方式有哪些

知识大全 用Spring framework实现定时器功能

用Springframework实现定时器功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  采