昨天,公司要做一个每天在服务器中更新,供用户访问的js文件,(其中存放JSON数据)。
这就设计到了定时任务的使用。需求是:每天0:00-9:00每小时运行一次生成js文件的任务(考虑到可能系统故障,导致的生成失败。所以多次调用方法,但是通过条件判断,若为最新就不执行)。
第一种方式:spring3.0以后自带的task(可以看成一个轻量级的Quartz)
代码如下:
spring-config-quartz.xml:
//首先到引入task命名空间
....
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
....
//注册使用到类的bean。 因为定时任务不多,这样配置方便读懂
//也可以用注解的方式,
<!--<task:annotation-driven scheduler="mySchduler"/>-->
<bean id="fundInfoJob" class="com.qunji.ec.web.utils.FundInfoJob"/>
<bean id="fundmarketJob" class="com.qunji.ec.web.utils.FundmarketJob"/>
//定时任务的驱动器
<task:scheduled-tasks scheduler="myScheduler">
//具体的定时任务
<task:scheduled ref="fundInfoJob" method="runTask" cron="0 0/59 0-8 * * ?" />
<task:scheduled ref="fundmarketJob" method="runTask" cron="0 0/59 0-8 * * ?" />
</task:scheduled-tasks>
//注册定时任务,并设定线程池大小
<task:scheduler id="myScheduler" pool-size="20"/>
如果使用注解的方式类中需要注意的地方:
@Component