linux任务调度框架,Quartz 任务调度框架整合Spring使用

简介

Quartz是一个完全由java编写的开源作业调度框架,其实是启动定时任务的框架。使用时只需创建一个org.quartz.Job接口的实现类,实现唯一的方法:public void execute(JobExecutionContext context) throws JobExecutionException,将你的逻辑任务添加到execute()方法即可。

一、基本概念

(一)、执行对象

Job :工作任务 ,你要做什么

Trigger:执行工作任务 触发条件 , 什么时间执行, 多久执行一次编写工作任务

(二)、 CronTrigger 的使用

如果你需要像日历那样按日程来触发任务,而不是像 SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers 通常比 SimpleTrigger 更有用。

Cron Expressions ——Cron

1. Seconds 秒

2. Minutes 分钟

3. Hours 小时

4. Day-of-Month 月中的天

5. Month 月

6. Day-of-Week 周中的天

7. Year (optional field) 年(可选的域)

所有的域中的值都有特定的合法范围,这些值的合法范围相当明显,例如:秒和分域的合法值为 0 到 59,小时的合法范围是 0 到 23,Day-of-Month 中值得合法凡范围是 0 到 31,但是需要注意不同的月份中的天数不同。月份的合法值是 0 到 11。或者用字符串JAN,FEB MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV 及 DEC 来表示。Days-of-Week可以用1到7来表示(1=星期日)或者用字符串SUN, MON, TUE, WED,THU, FRI 和 SAT 来表示.

通配符('*')可以被用来表示域中“每个”可能的值。因此在"Month"域中的*表示每个月,而在 Day-Of-Week 域中的*则表示“周中的每一天”。

'/'字符用来表示值的增量,例如, 如果分钟域中放入'0/15',它表示“每隔 15 分钟,从 0 开始”,如果在份中域中使用'3/20',则表示“小时中每隔 20 分钟,从第 3 分钟开始”或者另外相同的形式就是'3,23,43'。

0 0 12 ? * 3 每周二中午 12 点执行任务

0 0 0 0 * ? 每月 1 日 0 点执行任务

注意:4.月中天和6.周中天不能同时取到*,表示任意一天时一个用*,另一个用?

二、 Spring 整合Quartz

在 Job 中 spring 管理的 Bean 无法注入,需要在 Scheduler 中自定义 JobFactory解决。

(一)、创建JobFactory,用于注入Job实现Spring管理

@Service("jobFactory")public class JobFactory extendsAdaptableJobFactory{

@AutowiredprivateAutowireCapableBeanFactory capableBeanFactory;

@Overrideprotected Object createJobInstance(TriggerFiredBundle bundle) throwsException {

Object jobInstance= super.createJobInstance(bundle);

capableBeanFactory.autowireBean(jobInstance);returnjobInstance;

}

}

(二)、配置applicationContext.xml

1、开启包扫描(JobFactory、工作任务的Service层所在的包)

2、工作任务JobDetail配置----(JobDetailFactoryBean)

// 注入调度任务Job的Class文件

3、触发器Trigger配置----(SimpleTriggerFactoryBean)

// simmpleTrigger

// 注入调度任务job

// 设置多久后开始执行(0秒后执行)

// 设置多久循环执行一次(1分钟循环1次)

// cronTrigger

4、调度任务Scheduler配置----(SchedulerFactoryBean)

// 注入工作任务

// 注入触发器

附:

1、quartz 2.2.1 的 Maven 坐标:

org.quartz-scheduler

quartz

2.2.1

org.quartz-scheduler

quartz-jobs

2.2.1

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值