Srping定时任务实现

本文主要介绍通过Quartz和task实现Spring定时任务

一、通过Quartz实现spring定时任务

      引入spring相关包之后,还需引入quartz-all-1.8.6.jar   slf4j-api-1.7.5.jar
      1.写实现定时任务的类

package com.you.springmvc.controller;

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

public class SpringQuartzJob extends QuartzJobBean{

	//确保只有定时任务执行完后才能再次执行
	private static int flag=0;
	
	@Override
	protected void executeInternal(JobExecutionContext arg0)
			throws JobExecutionException {
		if(flag==0){
			System.out.println("===quartz定时任务开始===");
			try{
				flag=1;
			
			    System.out.println("==quartz定时任务执行中===");
				
			}catch(Exception e){
				
			}finally{
				flag=0;
				System.out.println("===quartz定时任务结束===");
			}
		}
		
	}

	

	

}

2.在Spring配置文件中加入配置  

<!-- quartz管理工厂类 -->
    <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="springQuartzJobBeanTrigger"/>
            </list>
        </property>
    </bean>
<!-- 触发器 -->
    <bean id="springQuartzJobBeanTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="springQuartzJobBean" />
        <!-- 每20秒执行一次 -->
        <property name="cronExpression" value="0/20 * * * * ?" />
    </bean>
    <!-- 定时任务详情 -->
    <bean id="springQuartzJobBean" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.you.springmvc.controller.SpringQuartzJob" /> <!-- 写定时任务的类 -->
    </bean>

 

二、通过task实现定时任务

      1.写实现定时任务的类

package com.you.springmvc.controller;


public class SpringScheduleJob {
	
	private static int flag=0;
	
	public void scheduleJobTest(){
		if(flag==0){
			System.out.println("=====进入定时任务======");
			flag=1;
		    try{
		        System.out.println("=====执行定时任务======");
		    }catch(Exception e){
		    	
		    }finally{
		    	flag=0;
		    	System.out.println("=====结束定时任务======");
		    }
			
		}
	}

}

     2.在Spring配置文件中配置


<!--  ref指向写定时任务的类,method指向写定时任务的方法,cron配置定时任务执行时间-->
<task:scheduled-tasks>
      
    <task:scheduled ref="scheduleJob" method="scheduleJobTest" cron=" 0/20 * * * * ? "/>
    
</task:scheduled-tasks>

<!--写定时任务的类-->
<bean id="scheduleJob" class="com.you.springmvc.controller.SpringScheduleJob"></bean>

三、从网上查找的定时任务执行时间的配置

    0 0 12 * * ?    每天12点触发    
    
    0 15 10 ? * *    每天10点15分触发    
    
    0 15 10 * * ?    每天10点15分触发    
    
    0 15 10 * * ? *    每天10点15分触发    
    
    0 15 10 * * ? 2005    2005年每天10点15分触发    
    
    0 * 14 * * ?    每天下午的 2点到2点59分每分触发    
    
    0 0/5 14 * * ?    每天下午的 2点到2点59分(整点开始,每隔5分触发)    
    
    0 0/5 14,18 * * ?    每天下午的 2点到2点59分、18点到18点59分(整点开始,每隔5分触发)    
    
    0 0-5 14 * * ?    每天下午的 2点到2点05分每分触发    
    
    0 10,44 14 ? 3 WED    3月分每周三下午的 2点10分和2点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    每月的第三周的星期五开始触发    
    
    0 0 12 1/5 * ?    每月的第一个中午开始每隔5天触发一次    
    
    0 11 11 11 11 ?    每年的11月11号 11点11分触发

转载于:https://my.oschina.net/u/2550133/blog/846220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值