推荐阅读文章:http://yanyaner.com/blog/2011/01/11/quartz/

简介

  • Quartz框架是一个全功能、开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统
  • Quartz可以执行上千上万的任务调度

核心概念

  • Quartz核心的概念(具体详解请百度):scheduler任务调度、Job任务、Trigger触发器、JobDetail任务细节

spring-context-timeTask.xml配置

  • 启动时需加载这个配置文件
  • 版本:1.8.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!-- 定时任务配置 scheduler 方式 注解 暂时不支持动态更新 -->
<context:component-scan base-package="com.api.web.timer,com.app.module.timer.task" />
<task:executor id="executor" pool-size="5" />
<task:scheduler id="scheduler" pool-size="10" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
<!-- 定时任务配置 quartz 可配置到管理界面 -->
<bean id="taskServiceTaskJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="timerTaskService" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="work" />
<!-- true:第二个任务来之前,第一个继续做,不停止 -->
<property name="concurrent" value="true" />
</bean>
<!-- 配置触发器 -->
<bean id="taskServiceTaskCronTrigger" class="com.api.web.timer.DataBaseCronTriggerBean">
<property name="jobDetail" ref="taskServiceTaskJob" />
<property name="cronExpression" value="0 0/1 * * * ?" />
</bean>
<!-- 核心任务调度器 -->
<bean id="schedulerFactory" lazy-init="false" autowire="no"
class="com.api.web.timer.DataBaseSchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="taskServiceTaskCronTrigger" />
</list>
</property>
</bean>

任务调度实现类

1
2
3
4
5
6
7
8
9
10
11
@Service("timerTaskService")
public class TimerTaskServiceImpl implements TimerTaskServiceI {
public void work() {
System.out.println("----------默认数据定时任务,任务测试1-------");
}
@Scheduled(cron="0/1 * * * * ?")
public void work2() {
System.out.println("----------任务测试2-------");
}
}

corn表达式

  • 【秒 【分】 【时】 【日】 【月】 【周】 【年】
    下面只例出几个式子;
    CRON表达式 含义
    “0 0 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:55分结束每5分钟一次触发
    “0 0/5 14,18 * * ?” 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
    “0 0-5 14 * * ?” 每天14:00至14:05每分钟一次触发
    “0 10,44 14 ? 3 WED” 三月的每周三的14:10和14:44触发
    “0 15 10 ? * MON-FRI” 每个周一、周二、周三、周四、周五的10:15触发

  • Quartz Cron 生成工具: http://www.jeasyuicn.com/cron/

文章目录
  1. 1. 推荐阅读文章:http://yanyaner.com/blog/2011/01/11/quartz/
  • 简介
  • 核心概念
  • spring-context-timeTask.xml配置
  • 任务调度实现类
  • corn表达式
  • 不止于此

    IT技术分享博客