spring定时器

spring还是以整合已有的框架为主,对于定时器(也有人叫触发器)分为两类,Java的Timer和第三方OpenSymphony的Quartz,这里讨论Quartz,因为它对时间的设置比较灵活。

在spring中,可以继承QuartzJobBean,也可以不做任何继承,当然写法也不一样,这里用的非继承的写法。

定时器的注册过程:1.创建bean,2.声明bean为一个定时器,3.设置任务时间,4.在调度中注册定时器

先看看spring用到的一些类:

org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean:声明定时器用的

org.springframework.scheduling.quartz.CronTriggerBean:设置时间

org.springframework.scheduling.quartz.SchedulerFactoryBean:总调度

先随便写个类

public class A{

public void test(){

//具体业务

}

}

1.创建bean

<bean name="aTask"class="A">
 </bean>

 2.声明bean为一个定时器

<bean name="aTaskMethodInvoking" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="aTask" />

<!-- 启动定时器时执行的方法 -->
  <property name="targetMethod" value="test" />

<!-- 非并发定时器 -->
  <property name="concurrent" value="false" />
 </bean>

3.设置任务时间

 <bean name="aTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="aTaskMethodInvoking" />
  <property name="cronExpression">

<!-- 格式到网上查,这里是每分钟执行一次 -->
   <value>0 0/1 * * * ?</value>
  </property>
 </bean>

4.在调度中注册定时器

 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>
    <ref bean="aTaskTrigger" />
   </list>
  </property>
 </bean>

你可能感兴趣的:(spring,bean,框架,quartz)