spring整合quartz

quartz的jar包:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>1.8.5</version>
</dependency>

spring-context.xml配置:

xmlns中加入

xmlns:task="http://www.springframework.org/schema/task"
xsi中加入

http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd

声明定时器开关

<!-- 定时器开关-->
<task:annotation-driven />

扫包的时候一定要扫到定时器的java类,我这里叫做 yjc.demo.task.SchedulerDemo.java

<context:component-scan base-package="yjc.demo.task"/>

测试代码

package yjc.demo.task;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * Created by yangjiachang on 2016/7/21.
 */
@Component
public class SchedulerDemo {

    /**
     * 每隔5秒执行一次
     */
    @Scheduled(fixedRate = 1000*5)
    public void test1(){
        System.out.println("test1:"+System.currentTimeMillis());
    }

    /**
     * 每隔5秒执行一次
     */
    @Scheduled(cron = "*/5 * * * * ?")
    public void test2(){
        System.out.println("test2:"+System.currentTimeMillis());
    }


    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:spring-context.xml") ;
    }
}

因为需要通过扫包注入到spring容器中,所以一定要有一个@componentz。


真正需要执行的定时任务是由@Scheduled注解声明的,可以通过cron表达式来触发任务。

以上是通过注解的方式完成spring整合quartz。

还有一种通过在xml配置文件中,配置job和tigger来声明定时任务,这种方式配置较多,比较繁琐,建议使用注解的方式简单易行。


最后简单介绍一下cron表达式

说明:

         1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

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

               秒                         0-59                               , - * /  

               分                         0-59                               , - * /  

               小时                   0-23                               , - * /  

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

               月                         1-12 or JAN-DEC          , - * /  

               周几                     1-7 or SUN-SAT            , - * ? / L C #  

               年 (可选字段)     empty, 1970-2099      , - * /

               “?”字符:表示不确定的值

               “,”字符:指定数个值

               “-”字符:指定一个值的范围

               “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

               “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

               “W”字符:指定离给定日期最近的工作日(周一到周五)

               “#”字符:表示该月第几个周X。6#3表示该月第3个周五

         2)Cron表达式范例:

                 每隔5秒执行一次:*/5 * * * * ?

                 每隔1分钟执行一次:0 */1 * * * ?

                 每天23点执行一次:0 0 23 * * ?

                 每天凌晨1点执行一次:0 0 1 * * ?

                 每月1号凌晨1点执行一次:0 0 1 1 * ?

                 每月最后一天23点执行一次:0 0 23 L * ?

                 每周星期天凌晨1点实行一次:0 0 1 ? * L

                 在26分、29分、33分执行一次:0 26,29,33 * * * ?

                 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值