博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

简单的定时调度(不需要大量配置)

Posted on 2011-12-26 15:13  chunlong  阅读(249)  评论(0)    收藏  举报

现在在网上搜的定时调度大都是一些很老的实现方式了,全部是配置文件来完成的,写起来麻烦,并且还不易上手。我通过朋友找到了一个比较简单的办法来和大家分享,希望能给你带来些方便。

1.在service层创建一个CronService类。例如:

package com.eerong.service;
import org.springframework.stereotype.Service;

@Service
public class CronService {
  
    public void beginTask() {   

       System.out.println("定时调度开始了");

    System.out.println("执行要执行的方法");

    System.out.println("定时调度结束了");
    } 
   
    }

2.再创建一个配置文件task.xml

<?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:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans           
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.0.xsd"
    default-autowire="byName">

    <task:scheduled-tasks>
        <task:scheduled ref="cronService" method="beginTask" cron="0 30 8 ? * MON" />

  <!-- 这里的ref表示来自哪个service,method就是该类中要定时调度的方法名,cron是表示按照什么时间来执行method属性的方法() -->
    </task:scheduled-tasks>
</beans>

定时调度就这么简单的搞定了,比起网上那些繁琐的配置省事多了。如果你有多个方法需要执行,那就再写一个<task:scheduled ref="cronService" method="beginTask" cron="0 30 8 ? * MON" />就行了,改下名称和时间 就OK了。

 

一些时间的列子。可以到网上搜下这方面的表达式:

表达式

意思(触发时刻)

0 0 12 * * ?

每天中午12点

0 15 10 * * ? 2005

在2005年的每天10:25

0 10,44 14 ? 3 WED

在3月里每个周三的14:10和14:44

0 15 10 ? * 6L 2002-2005

从2002年到2005年里,每个月的最后一个星期五的10:15

0 0 12 1/5 * ?

从当月的第一天开始,然后在每个月每隔5天的12:00

0 15 10 ? * 6#3

每个月第3个周五的10:15