Spring定时框架Quartz的使用

Spring提供了简单方便的的Quartz定时任务框架

使用时除了导入spring基础jar包,还需要quartz jar包

<dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
   <version>1.8.5</version>
</dependency>
新建一个任务类,里面包含执行的方法

public class TaskJob {
    private static final Logger logger = LoggerFactory.getLogger(TaskJob.class);

    public void sayHello() {
        logger.info("定时任务开始........");
        System.out.println("时间:" + DateUtils.now() + "大家好......");
        logger.info("定时任务结束........");
    }
}
新建spring配置文件

引入该类

<bean name="taskJob" class="com.tc.itfarm.web.task.TaskJob"/>
设置定时任务,执行的类和方法

<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
        <ref bean="taskJob"/>
    </property>
    <property name="targetMethod">
        <value>sayHello</value>
    </property>
</bean>

添加一个任务触发器,配置执行的任务和执行时间,下面配置的是从1点到24点 没隔一分钟执行一次

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
        <ref bean="methodInvokingJobDetail"/>
    </property>
    <property name="cronExpression">
        <value>0 * 01-24 * * ?</value>
    </property>
</bean>
然后在任务调度工厂,添加该触发器

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref local="cronTrigger"/>
        </list>
    </property>
</bean>
写个测试类,加载该配置文件,或者部署到tomcat启动

执行结果如下

时间:Wed Aug 10 08:39:00 CST 2016大家好......
2016-08-10 08:39:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1:637919 ] - [ INFO ]  定时任务结束........
2016-08-10 08:40:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-2:697918 ] - [ INFO ]  定时任务开始........
时间:Wed Aug 10 08:40:00 CST 2016大家好......
2016-08-10 08:40:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-2:697919 ] - [ INFO ]  定时任务结束........
2016-08-10 08:41:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3:757919 ] - [ INFO ]  定时任务开始........
时间:Wed Aug 10 08:41:00 CST 2016大家好......
2016-08-10 08:41:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3:757920 ] - [ INFO ]  定时任务结束........
2016-08-10 08:42:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4:817938 ] - [ INFO ]  定时任务开始........
时间:Wed Aug 10 08:42:00 CST 2016大家好......
2016-08-10 08:42:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4:817938 ] - [ INFO ]  定时任务结束........
2016-08-10 08:43:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-5:877919 ] - [ INFO ]  定时任务开始........
时间:Wed Aug 10 08:43:00 CST 2016大家好......
2016-08-10 08:43:00  [ org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-5:877919 ] - [ INFO ]  定时任务结束........


cronExpression的配置说明,具体使用以及参数请百度google

字段   允许值   允许的特殊字符

秒    0-59    , - * /

分    0-59    , - * /

小时    0-23    , - * /

日期    1-31    , - * ? / L W C

月份    1-12 或者 JAN-DEC    , - * /

星期    1-7 或者 SUN-SAT    , - * ? / L C #

年(可选)    留空, 1970-2099    , - * / 

- 区间  

* 通配符  

? 你不想设置那个字段

下面只例出几个式子

 

CRON表达式    含义 

"0 0 12 * * ?"    每天中午十二点触发 

"0 15 10 ? * *"    每天早上10:15触发 

"0 15 10 * * ?"    每天早上10:15触发 

"0 15 10 * * ? *"    每天早上10:15触发 

"0 15 10 * * ? 2005"    2005年的每天早上10:15触发 

"0 * 14 * * ?"    每天从下午2点开始到2点59分每分钟一次触发 

"0 0/5 14 * * ?"    每天从下午2点开始到2:55分结束每5分钟一次触发 

"0 0/5 14,18 * * ?"    每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 

"0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发 

"0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发 

"0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10:15触发 

对应 秒 分 小时 日期 月份 星期 年

猜你喜欢

转载自blog.csdn.net/qq812908087/article/details/52167938