Spring-task-timer定时器

 · spring定时控制器配置文件实现方式

    一. 编写一个正常的业务类

public class SyncDataTaskTimer {
    
    
    private final static Logger log = Logger.getLogger(SyncDataTaskTimer.class); 
    
    /**
     * 同步组织
     */
    public void syncOrg(){
        log.info("同步组织:"+System.currentTimeMillis());
    }
    /**
     * 同步用户
     */
    public void syncUser(){
        log.info("同步用户:"+System.currentTimeMillis());
    }
    
}

  二. applicationContext-task.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
    http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.0.xsd">
        
    <!-- spring定时任务配置项 -->
    <bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"/>

    <!-- 同步ipm数据-定时任务配置 -->
    <bean id="syncDataTaskTimer" class="cn.chinaunicom.pmis.interfaces.ipm.server.task.SyncDataTaskTimer"/>

    <!-- 任务时间项配置 -->
    <task:scheduled-tasks>
        <task:scheduled ref="syncDataTaskTimer" method="syncOrg" cron="0 30 23 * * ?"/>
        <task:scheduled ref="syncDataTaskTimer" method="syncUser" cron="0 40 23 * * ?"/>
    </task:scheduled-tasks>
    

  三. applicationContext.xml 引用

<!-- 支持自带定时任务配置 -->
<import resource="applicationContext-task.xml" />

  注:这里把spring的配置文件进行了拆分。

----------------------------------------分割线-----------------------------------------

 

  · 难点解析

  一. cron语法

    <task:scheduled ref="syncDataTaskTimer" method="syncOrg" cron="0 30 23 * * ?"/>  

     cron="0 30 23 * * ?"意思为每天的23点30分执行一次。

    cron语法使用和字符解释

      cron的使用语法:

        

 (Seconds)  (Minutes)  (Hours)  (DayofMonth)  (Month)  (DayofWeek) [Year]
[年]

  

       cron的字符意义:

        ① * : 表示在当前区域内匹配任意值,列如如果在秒上,则表示每秒都出发该事件

        ② ? : 表示任意值,使用在dayofmonth和dayofweek上

        ③ / : 使用方式5/15,假如写在秒所在区域上,左边是开始时间,右边是在隔15秒后执行,所以执行频率是, 5秒执行一次,20秒执行一次,35,50

        ④ - : 表示一个区间,如果在分钟区域1-5,其时间内每分钟执行一次

        ⑤ , : 枚举值,在分钟位置上5,15,31,代表这5分,15分,31分各执行一次

        ⑥ # : 2#3,每个月第三个周的星期一(1代表日,2代表星期一)

        ⑦ L : 最后的意思,使用在dayofmonth和dayofweek上,如放在dayofweek=6L,意思是星期五触发。

        ⑧ W :正常工作日周一到周五

        ⑨ LW:每个月最后的一个周五

      

       在网上摘抄一些例子,基本上都包含了,

      

“0 0 12 * * ?” 每天12:00触发事件
“0 15 10 ? * *” 每天10:15触发事件
“0 15 10 * * ?” 每天10:15触发事件
“0 15 10 * * ? *” 每天10:15触发事件
“0 15 10 * * ? 2005″ 2005年的每天10:15触发事件
“0 * 14 * * ?” 每天14点开始触发,每分钟触发一次,14:59分结束
“0 0/5 14 * * ?” 每天14点开始触发到14:59分结束的每5分钟触发一次事件
“0 0/5 14,18 * * ?” 每天14点开始到14:59期间和18点到18:59期间的每5分钟触发一次事件
“0 0-5 14 * * ?” 每天14点到14:05期间的每1分钟触发一次事件
“0 10,44 14 ? 3 WED” 每年3月的星期三的14:10和14:44触发一次事件
“0 15 10 ? * MON-FRI” 周一至周五的10:15触发一次事件
“0 15 10 15 * ?” 每月15日10:15触发一次事件
“0 15 10 L * ?” 每月最后一日的10:15触发一次事件
“0 15 10 ? * 6L” 每月的最后一个星期五10:15触发一次事件
“0 15 10 ? * 6L 2002-2005″ 2002年至2005年的每月的最后一个星期五10:15触发一次事件
“0 15 10 ? * 6#3″ 每月的第三个星期五10:15触发一次事件
posted @ 2015-12-23 10:11  哎呦喂,我的小祖宗╰つ  阅读(462)  评论(0编辑  收藏  举报