运用Spring框架实现简单调度

JAVA开发语言中,调度程序实现的办法有很多,从最底层的线程到Timer,都是最基本的调度实现。当前很多开源项目也提供了比较全面的调度功能,如quartz、jcrontab、JobServer等,在这里我介绍一种比较简单的调度,没有quartz那么复杂,目的在于实用就行,这种调度就是spring提供的调度功能,该调度功能基于quartz+AOP进行实现,下面我们开始一个例子吧。

Spring 时间调度策略提供简单常用和Cron表达式两种,为了测试两种调度方法,我们先定义两个基本job,以区别它们,注意,JOB对象不用实现任何接口或继承任何类。

简单TestJob


package com.tiwen.demo;
 
public class TestJob {
 
    public void doSome() {
       System.out.println("正在执行SimpleTriggerBean调度起来的TestJob.doSome()方法");
    }
 
}



Cron调度TestCronJob

package com.tiwen.demo;
 
public class TestCronJob {
 
    public void sayHello() {
       System.out.println("正在执行CronTriggerBean调度起来的TestCronJob.sayHello()方法");
    }
 
}



接下来关键就定义spring配置文件了 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
    <!-- 总调度 -->
    <bean id="startQuartz"
       class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <property name="triggers">
           <list>
              <ref bean="testJobDetailTrigger" />
              <ref bean="testJobDetailCronTrigger" />
           </list>
       </property>
    </bean>
 
 
    <!-- SimpleTriggerBean test -->
    <bean id="testJobDetailTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"
        p:jobDetail-ref="testJobDetail"
       p:startDelay="1000" p:repeatInterval="3000" />
 
    <bean id="testJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
       p:targetObject-ref="testJob" p:targetMethod="doSome" />
 
    <bean id="testJob" class="com.tiwen.demo.TestJob"/>
    <!-- end SimpleTriggerBean test -->
   
   
    <!-- SimpleTriggerBean test -->
    <bean id="testJobDetailCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"
        p:jobDetail-ref="testCronJobDetail"
       p:cronExpression="0/10 * * * * ?" />
 
 
    <bean id="testCronJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
       p:targetObject-ref="testCronJob" p:targetMethod="sayHello" />
 
    <bean id="testCronJob" class="com.tiwen.demo.TestCronJob"/>
    <!-- end SimpleTriggerBean test -->
</beans>


从配置文件中我们可以看出,我们只需要定义一个job,然后告诉MethodInvokingJobDetailFactoryBean触发一下这个实例,并且告诉它触发的方法。

然后分别定义一个触发器,SimpleTriggerBean和CronTriggerBean,SimpleTriggerBean是简单的触发规则,可以设置开始延迟时间和周期之间延迟时间(单位毫秒);CronTriggerBean可以通过设置cron表达式来定义好调度策略。

 

最后一个关键环节就是将触发器组装到SchedulerFactoryBean里,以便容器启动后,正常触发调度任务。

 

打印一下调度执行结果:

正在执行SimpleTriggerBean调度起来的TestJob.doSome()方法
正在执行CronTriggerBean调度起来的TestCronJob.sayHello()方法
正在执行SimpleTriggerBean调度起来的TestJob.doSome()方法
正在执行SimpleTriggerBean调度起来的TestJob.doSome()方法
正在执行SimpleTriggerBean调度起来的TestJob.doSome()方法
正在执行CronTriggerBean调度起来的TestCronJob.sayHello()方法
正在执行SimpleTriggerBean调度起来的TestJob.doSome()方法
………



学习例子下载:http://download.csdn.net/detail/tiwen818/3854401

 

 

原创文章,如果转载,请标注作者:田文  CSDN地址:http://blog.csdn.net/tiwen818

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值