Quartz 任务调度框架整合Spring使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz 任务调度框架整合Spring使用相关的知识,希望对你有一定的参考价值。
(二)、 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
@Service("jobFactory") public class JobFactory extends AdaptableJobFactory{ @Autowired private AutowireCapableBeanFactory capableBeanFactory; @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { Object jobInstance = super.createJobInstance(bundle); capableBeanFactory.autowireBean(jobInstance); return jobInstance; } }
<context:component-scan base-package="com.hehe.quartz.service" />
<bean id="helloJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
// 注入调度任务Job的Class文件 <property name="jobClass" value="cn.itcast.quartz.job.HelloJob"/> </bean>
3、触发器Trigger配置----(SimpleTriggerFactoryBean)
// simmpleTrigger
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
// 注入调度任务job
<property name="jobDetail" ref="helloJob" />
// 设置多久后开始执行(0秒后执行)
<property name="startDelay" value="0" />
// 设置多久循环执行一次(1分钟循环1次)
<property name="repeatInterval" value="60000" />
</bean>
// cronTrigger
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="exampleJob"/>
<property name="cronExpression" value="0 0 6 * * ?"/>
</bean>
4、调度任务Scheduler配置----(SchedulerFactoryBean)
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> // 注入工作任务
<property name="jobFactory" ref="jobFactory"/>
// 注入触发器 <property name="triggers"> <list> <ref bean="simpleTrigger"/> </list> </property> </bean>
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency>
以上是关于Quartz 任务调度框架整合Spring使用的主要内容,如果未能解决你的问题,请参考以下文章
项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送