1、了解框架Quartz
2、任务Job
3、触发器:Trigger
4、调度器:Scheduler
定义:
任务调度:根据时间,执行任务
用处:
用户定了酒店没有支付,需要把订单取消,并把库存释放掉
核心概念:
任务Job:需要执行的"具体工作"
触发器:Trigger:在特定的"时间"触发任务的执行
调度器:Scheduler:任务的实际"执行者",负责粘合 任务和触发器
任务 ---->调度器<-------------触发器
添加依赖
org.quartz-scheduler quartz 1.8.6步骤:
1/创建Job 有job的上下文参数
2、调用创建Job,触发器,调度器
Cron表达式
:6~7位
1:秒 0-59
2:分 0-59
3:时 0-23
4:月的天 1-31
5:月 1-12
6:星期 1-7
7:年份 1970-2099
- 表示每一个值
? 和上面一样 ,用于月份、周 注:月 周不能同时使用* 或者?
- 范围
, 列表
x/y x起始值,y增量
Spring整合Quqrtz
1、使用的IDea,Xsd会自动加入添加
<task:annotation-driven scheduler="myScheduler" />
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd ">
2 、spring配置文件加入定时任务扫描包
<!-- 此处配置要扫描的定时任务类 -->
<context:component-scan base-package="com.sc.api" />
3、spring配置文件加入定时任务扫描包
<!-- 此处配置要扫描的定时任务类 -->
<context:component-scan base-package="com.sc.api" />
4、添加定时任务线程池,单线程会出现问题
<task:scheduler id="myScheduler" pool-size="5"/>
5、Service或Controller中 (Spring 要扫描)
注意类上要添加@Component
需要任务调度的方法上添加
@Scheduled(cron="* * 5/4 * * * ?")