【黑马程序员济南】Quartz的使用
1. 简介
Quartz是一个处理定时任务的开源框架在我们开发过程中,比如定期清理过期的任务都会使用到。它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或EJBs。
2. Quartz的执行流程如下
1、org.quartz.Job它是一个抽象接口,表示一个工作,也就是我们要执行的具体内容,他只定义了一个几口方法:
void execute(JobExecutionContext context)
作用等同Spring的:
org.springframework.scheduling.quartz.QuartzJobBean
2、org.quartz.JobDetail
JobDetail
表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,它包含了这个任务调度的方案和策略。他的实现类:
org.quartz.impl.JobDetailImpl
作用等同Spring:
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
3、org.quartz.Trigger它是一个抽象接口,表示一个调度参数的配置,通过配置它,来告诉调度容器什么时候去调用JobDetail。他的两个实现类:
org.quartz.impl.triggers.SimpleTriggerImpl
org.quartz.impl.triggers.CronTriggerImpl
等同于Spring的:
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
前者只支持按照一定频度调用任务,如每隔30分钟运行一次。后者既支持按照一定频度调用任务,又支持定时任务。
4、org.quartz.Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。它的方法有start()、shutdown()等方法,负责管理整个调度作业。等同Spring的:org.springframework.scheduling.quartz.SchedulerFactoryBean
3.1入门案例
本案例基于quartz和spring整合应用
3.1.1第一步:创建maven工程,继承common_parent,在pom文件中引入quartz的坐标
3.1.2第二步:创建一个自定义Job
3.1.3第三步:提供spring配置文件,配置定时任务
"myJob"class="cn.itcast.jobs.MyJob">
"jobDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
"targetObject"ref="myJob"/>
"targetMethod"value="sendMsg"/>
"myTrigger"class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
"jobDetail"ref="jobDetail"/>
"cronExpression">
0/5 * * * * ?
"org.springframework.scheduling.quartz.SchedulerFactoryBean">
"triggers">
"myTrigger"/>
3.1.4第四步:加载上面的spring文件,创建spring工厂
4.在项目中使用Quartz创建定时任务发送邮件
4.1第一步:在项目中引入quartz的坐标
4.2第二步:自定义Job,用于定时发送邮件
4.3第三步:在spring配置文件中注册
"myJob"class="cn.itcast.bos.web.jobs.OrderJob">
"jobDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
"targetObject"ref="myJob"/>
"targetMethod"value="sendMail"/> "myTrigger"class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
"jobDetail"ref="jobDetail"/>
"cronExpression">
0/10
"org.springframework.scheduling.quartz.SchedulerFactoryBean">
"triggers">
"myTrigger"/>
【黑马程序员济南】小鲁哥哥全学科技术整合帖(一贴在手!天下我有!)
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
黑马程序员济南中心联系电话:0531-55696830
网友评论