springQuartz定时器

版本springframework:4.2.2.RELEASE;quartz:2.2.2.参见 定时器

1、依赖:

spring核心包

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${springframework.version}</version>
</dependency>
springJob包
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>     
    <version>${springframework.version}</version>
</dependency>
spring事务包
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${springframework.version}</version>
</dependency>
quartz包
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>${quartz.version}</version>
</dependency>
2、Job调度类的创建:

创建调度类并继承QuartzJobBean类,并实现其方法,在其方法中写自己的调度。

3、spring-quartz.xml的编写(使用corn表达式):

1)容器扫描写job的文件夹;
2)创建描述自己调度详情的bean标签,类为JobDetailFactoryBean。
bean标签内部,基本的property名为jobClass,指向自己的调度类。
3)创建调度对应的触发器(调度与触发器时一对一的关系)类为CronTriggerFactoryBean。
bean标签内部,基本property名为jobDetail,指向自己的调度bean标签。
基本property名为cronExpression,调度表达式。
4)集结所有的调度bean和trigger:
创建bean标签,没有id,只有类名,SchedulerFactoryBean。
bean标签内部,基本property名为jobDetails,内部<list>标签,list标签内罗列所有的调度bean。
基本property名为triggers,内部<list>标签,List标签内罗列所有的调度触发器bean。
使用corn表达式的灵活示例:

<context:component-scan base-package="org.seckill.job"/>

    <bean id="firstComplexJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="jobClass" value="org.seckill.job.FirstScheduledJob"/>
        <property name="jobDataMap">
            <map>
                <entry key="anotherBean" value-ref="anotherBean"/>
            </map>
        </property>
        
        <property name="durability" value="true"/>
    </bean>

    <bean id="secondJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="jobClass" value="org.seckill.job.SecondScheduledJob"/>

        <property name="durability" value="true"/>
    </bean>

    <!--两个触发器-->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="firstComplexJobDetail"/>
        <property name="cronExpression" value="0/15 * * ? * *"/>
    </bean>

    <bean id="secondCornTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="secondJobDetail"/>
        <property name="cronExpression" value="0 0/1 * ? * *"/>
    </bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
            <list>
                <ref bean="firstComplexJobDetail"/>
                <ref bean="secondJobDetail"/>
            </list>
        </property>

        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
                <ref bean="secondCornTrigger"/>
            </list>
        </property>
    </bean>

附带不使用corn表达式的示例:
由于不适用的比较简单,看配置文件就可以明白了,所以不做赘述。

<context:component-scan base-package="org.seckill.job"/>
    <bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="myBean"/>
        <property name="targetMethod" value="printMessage"/>
    </bean>

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
    <property name="jobDetail" ref="simpleJobDetail"/>
    <!--开始时间为启动后1000ms-->
    <property name="startDelay" value="1000"/>
    <!--重复调度时间为2000ms-->
    <property name="repeatInterval" value="2000"/>
</bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
            <list>
                <ref bean="simpleJobDetail"/>
            </list>
        </property>
        
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger"/>
            </list>
        </property>
    </bean>
4、调用:

新建一类,写一main方法,引入spring-quartz.xml文件。即可完成调用。

5、调度表达式:

一个调度表达式至少有6个(可能还是7个,最后一位是年,看情况需要),用空格分隔开,依次为 秒 分 时 日 月 周 年。参见 调度表达式
在每一位上的具体数值,必须得等到系统日期到达该时间时才会触发。

在周位上,从1-7,表示从SUN-SAT(周日-周六)。
1. 通配符,表达式匹配任意可能的值;
2. / 表示递增,如在秒位上0/15,表示从第0秒开始(按照系统时间,而非启动的精确时间),每隔15秒触发依次。
3. ,表示该位置有多个单独的值。如在秒位上15,25,35表示第15,25,35秒。
4. - 表示区间。如在秒位上15-30表示第15秒到第30秒。
5. ?仅用于 日 或者 周 上,当两者中任一为
,另外一个就得为?,防止冲突。
6. L 仅用于 日 或者 周 上,表示“last”。如在日上L表示最后一天,6L表示本月倒数第6天,在周上L表示SAT(周六),6L或FRIL表示本月最后一个周五。
7. # 仅用于 周 上,如6#3表示第三个周五。如果表示的值超出范围,忽略。
8. W 仅用于日 上,表示在本月中,离工作日(周一到周五)最近的一天,可前可后,若当天即工作日,当天触发。

6、常用的调度表达式
意义 表达式
每月的第一天的0点0分0秒 0 0 0 1 * ?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容