Spring任务调度-基于JDK Timer

任务调度图解:

1.继承TimerTask类的方式
Java代码
public class BatchUpdate extends TimerTask {
//存放批量更新语句
private List commands;

public void setCommands(List commands) {
this.commands = commands;
}

@Override
public void run() {
for(Iterator it=commands.iterator();it.hasNext();){
System.out.println(it.next());
}
System.out.println("执行完毕");
}

}


Spring配置文件
<!-- 使用【使用继承TimerTask方式】配置【任务】-TimerTask,该Bean继承了TimerTask类 -->
<!-- 配置【目标Bean】,同时也是一个TimerTask,因为继承了TimerTask类的缘故 -->
<bean id="batch_update" class="com.Task.timerTask.BatchUpdate">
<property name="commands">
<list>
<value>update person set onduty="出勤" where date=${ontime}</value>
<value>update person set onduty="缺勤" where date=${miss}</value>
<value>update person set onduty="迟到" where date=${late}</value>
</list>
</property>
</bean>
<!-- ************************************************* -->
<!-- 配置【任务Bean】-ScheduledTimerTask -->
<bean id="update_scheduleTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- 指定调度目标 -->
<property name="timerTask" ref="batch_update"/>
<!-- 第一次启动任务后,间隔一秒钟开始执行任务 -->
<property name="delay">
<value>1000</value>
</property>
<!-- 第二次起,每隔两秒执行一次任务 -->
<property name="period">
<value>2000</value>
</property>
</bean>

<!-- 调度任务管理-TimerFactoryBean -->
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<!-- 配置任务列表 -->
<property name="scheduledTimerTasks">
<list>
<ref local="update_scheduleTask"/>
</list>
</property>
</bean>


2.使用MethodInvokingTimeTaskFactoryBean封装的方式
Java代码
public class BatchUpdate {
//存放批量更新语句
private List commands;

public void setCommands(List commands) {
this.commands = commands;
}

public void run() {
for(Iterator it=commands.iterator();it.hasNext();){
System.out.println(it.next());
}
System.out.println("MethodInvoking方式执行完毕");
}

}


Spring配置文件
<!-- 使用MethodInvokingTimerTaskFactory配置【任务】-TimerTask -->
<!-- 配置目标Bean -->
<bean id="batch_update2" class="com.Task.methodInvoking.BatchUpdate">
<property name="commands">
<list>
<value>update person set onduty="出勤" where date=${ontime}</value>
<value>update person set onduty="缺勤" where date=${miss}</value>
<value>update person set onduty="迟到" where date=${late}</value>
</list>
</property>
</bean>
<!-- 配置TimerTask【任务】Bean,即指定目标bean及其需要定时执行的方法 -->
<bean id="methodInvoking" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<!-- 指定被调度的Bean -->
<property name="targetObject" ref="batch_update2"/>
<!-- 指定被调度执行的方法 -->
<property name="targetMethod" value="run"/>
</bean>

<!-- 配置【任务Bean】-ScheduledTimerTask -->
<bean id="update_scheduleTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- 指定调度目标 -->
<property name="timerTask" ref="methodInvoking"/>
<!-- 第一次启动任务后,间隔一秒钟开始执行任务 -->
<property name="delay">
<value>1000</value>
</property>
<!-- 第二次起,每隔两秒执行一次任务 -->
<property name="period">
<value>2000</value>
</property>
</bean>

<!-- 调度任务管理-TimerFactoryBean -->
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<!-- 配置任务列表 -->
<property name="scheduledTimerTasks">
<list>
<ref local="update_scheduleTask"/>
</list>
</property>
</bean>

执行代码ClassPathXmlApplicationContext cpx=new ClassPathXmlApplicationContext("TimerTask_applicationContext.xml");
执行结果 
1.继承TimerTask类的方式2.使用MethodInvokingTimeTaskFactoryBean封装的方式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值