定时器实现 使用spring

1.使用java的timeTask 类

   任务继承timeTask类 然后在spring的配置文件中添加配置

   此task的bean

   任务如何执行的bean

   执行任务的bean

 例如:

<bean id="HelloTask" class="test.springTimer.Task2"></bean>

<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="sayHelloTask"/>
</property>
<!-- 任务执行周期 2m 关于一些任务的参数请参考JDK doc文档和Spring相关文档-->
<property name="period">
<value>2000</value>
</property>
<!-- 延时1m 执行任务 -->
<property name="delay">
<value>1000</value>
</property>
</bean>

<!-- 启动定时器 -->
<bean id="timerBean" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask"/>

</list>
</property>
</bean>
2.不继承java的timetask,任意类 任意方法

<bean id="methodInvokingJobDetail"        class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">      
  <property name="targetObject"><ref bean="task2"/></property>      
   <property name="targetMethod"><value>printtask</value></property>  
  </bean>
  
    <bean id="cronTrigger" class="org.springframework.scheduling.timer.ScheduledTimerTask">      
     <property name="delay"> 
   <value>6000</value> 
  </property>          
  <property name="period"> 
   <value>6000</value> 
  </property> 
  <property name="timerTask">
   <ref bean="methodInvokingJobDetail" /> 
  </property>
  </bean>
  
    <bean id="timerServiceOnTimeJobTaskFactory" class="org.springframework.scheduling.timer.TimerFactoryBean"> 
  <property name="scheduledTimerTasks"> 
   <list> 
    <ref bean="cronTrigger" />
   </list> 
  </property> 
 </bean>

3。可以使用quartz来实现

 继承extends QuartzJobBean 

1.配置 bean  触发器 

<bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>test.timerTask.SayHelloTaskUsingQuartz</value>
</property>
</bean> 

 

<bean id="helloCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="sayHelloJob"/>
</property>
<property name="cronExpression"> 
  
<!-- 关键在配置此表达式 --> 

<value>0 49 15 * *  </value>
</property>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<ref bean="helloCronTrigger"/>
</property>
</bean>

4.使用spring内置的quartz

<bean id="methodInvokingJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject"><ref bean="financeDAO"/></property>
        <property name="targetMethod"><value>confirmOrder</value></property>
    </bean>

    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="methodInvokingJobDetail"/>
        </property>
        <property name="cronExpression">
            <value>0 0 6,12,20 * * ?</value>
        </property>
    </bean>
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list><ref local="cronTrigger"/></list>
        </property>
    </bean>



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值