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   

, - * /   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值