码迷,mamicode.com
首页 > 其他好文 > 详细

欢迎使用CSDN-markdown编辑器

时间:2015-08-09 12:39:04      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:spring   任务调度   管理   

1定时器的作用
在实际的开发中,如果项目中需要定时执行或者需要重复执行一定的工作,定时器显现的尤为重要。
例如,公司的考勤系统—刷卡
财务的审查,入账,报表都会需要定时器,当然如果我们不了解定时器就会用线程去实现,这样会带来一些麻烦,而spring有任务调度管理功能,能很好地解决以上的问题,特别实用!
2.准备工作。
配置文件中加入


 <dependency>
  <groupId>quartz</groupId>
  <artifactId>quartz</artifactId>
  <version>1.5.2</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring</artifactId>
  <version>2.5.6</version>
</dependency>

3。接下来是你的任务类了。

package com.springquartz.bean;

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class PrintInfoJob extends QuartzJobBean{


    private int timeout;  
    private static int i = 0;  
    //调度工厂实例化后,经过timeout时间开始执行调度  
    public void setTimeout(int timeout) {  
    this.timeout = timeout;  
    }  
    /** 
    * 要调度的具体任务 
    */  
    @Override
    protected void executeInternal(JobExecutionContext arg0)
            throws JobExecutionException {
        // TODO Auto-generated method stub
        //this.prinfInfoService.print();
        System.out.println(new Date());  
    }
}

4。然后只需要配置配置文件了

<!-- 配置一个Job
     说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,
    jobClass属性即我们在java代码中定义的任务类,jobDataAsMap属性即该任务类中需要注入的属性值。

     -->
<bean id="printInfoJob" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.springquartz.bean.PrintInfoJob"/>
        <property name="jobDataAsMap">
            <map>
                <entry key="timeout" value="0" />
            </map>
        </property>
    </bean>
<!-- 简单的触发器
    Quartz的作业触发器有两种,分别是

org.springframework.scheduling.quartz.SimpleTriggerBean

org.springframework.scheduling.quartz.CronTriggerBean

第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。

SimpleTriggerBean方式如下:

     -->
     <bean id="simplePrintInfoTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail">
            <ref bean="printInfoJob"/>
        </property>
        <property name="startDelay">
            <value>0</value>
        </property>
        <property name="repeatInterval">
            <value>2000</value>     
        </property>
    </bean>
<!-- 
    第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
    如下
     每天12:00运行一次 
         -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
            <property name="jobDetail" ref="printInfoJob" />  
             <property name="cronExpression" value="0 0 12 * * ?" />  
    </bean>  
<!-- spring触发工厂
     说明:该参数指定的就是之前配置的触发器的名字。
这里选用的是SimpleTriggerBean触发器,便于马上看到效果
     -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="simplePrintInfoTrigger"/>
            </list>
        </property>
    </bean>

接下来<property name="cronExpression" value="0 0 12 * * ?" />说明一下其中value的值的含义

位置                        
-   
含义   
-   
1   
-   
秒(059)   
-   
2   
-   
分(059)   
-   
3   
-   
时(023)   
-   
4   
-   
日(131)   
-   
5   
-   
月(112)   
-   
6   
-   
星期(SUN–SAT or 17)   
-   
7   
-   
年(可选, 19702099) 


××××××比如“0 0 1 1 * ?”就表示每月1日凌晨1点运行××××


字段   

允许值   

允许的特殊字符   

秒   

0-59   

, - * /   


分   

0-59   

, - * /   


小时   

0-23   

, - * /   


日期   

1-31   

, - * ? / L W C   


月份   

1-12 或者 JAN-DEC   

, - * /   


星期   

1-7 或者 SUN-SAT   

, - * ? / L C #   


年(可选)   

留空, 1970-2099   

, - * /   

版权声明:本文为博主原创文章,未经博主允许不得转载。

欢迎使用CSDN-markdown编辑器

标签:spring   任务调度   管理   

原文地址:http://blog.csdn.net/ac_great/article/details/47374219

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!