彻底理解Spring的定制任务
时间:2010-12-26 爬虫工作室
相信做软件的朋友都有这样的经历,我的软件是不是少了点什么东西呢?比如定时任务啊!就拿新闻发布系统来说,如果新闻的数据更新太快,势必涉及一个问题,这些新闻不能由人工的去发布,应该让系统自己发布,这就需要用到定时定制任务了,以前定制任务无非就是设计一个Thread,并且设置运行时间片,让它到了那个时间执行一次,就ok了,让系统启动的时候启动它,想来也够简单的。不过有了spring,我想这事情就更简单了。
看看spring的配置文件,想来就只有这个配置文件了。
XML代码:
< bean id = "infoCenterAutoBuildTask"
class = "com.teesoo.teanet.scheduling.InfoCenterAutoBuildTask" >
< property name = "baseService" ref = "baseService" />
< property name = "htmlCreator" ref = "htmlCreator" />
< bean id = "scheduledTask"
class = "org.springframework.scheduling.timer.ScheduledTimerTask" >
< property name = "delay" value = "10000" />
< property name = "period" value = "1000000" />
< property name = "timerTask" ref = "infoCenterAutoBuildTask" />
< bean id = "timerFactory"
class = "org.springframework.scheduling.timer.TimerFactoryBean" >
< property name = "scheduledTimerTasks" >
< list >
< ref bean = "scheduledTask" />
上面三个配置文件中只有一个配置文件是涉及到您自己的class的,其他的都是spring的类。很简单吧!
我们只需要涉及一个class让他继承java.util.TimerTask;
Java代码:
BaseTask extends java.util.TimerTask {
//用户只需要实现这个方面,把自己的任务放到这里
public void run(){
}
}
彻底理解Spring的定制任务(2)
时间:2010-12-26 爬虫工作室
下面让我们来看看spring的源代码:
Java代码:
/*
* Copyright 2002-2005 the original author or authors.
*
* Licensed under the Apache License,Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.scheduling.timer;
import java.util.TimerTask;
/**
* JavaBean that describes a scheduled TimerTask,consisting of
* the TimerTask itself (or a Runnable to create a TimerTask for)
* and a delay plus period. Period needs to be specified;
* there is no point in a default for it.
*
*
The JDK Timer does not offer more sophisticated scheduling
* options such as cron expressions. Consider using Quartz for
* such advanced needs.
*
*
Note that Timer uses a TimerTask instance that is shared
* between repeated executi
|