前言:这些天简直被quartz虐哭。。因为quartz 2.x版本相比quartz1.x版本的API改动太多,所以,只好自己去查阅底层API……
quartz定时任务必须搞清楚几个概念:
JobDetail——处理类
Trigger——触发器,指定触发时间,必须要有JobDetail属性,即触发对象
Scheduler——调度器,组织处理类和触发器,配置方式一般只需指定触发器(因为触发器已经指定了对应的处理类),代码方式则需同时指定触发对象和触发器。
代码方式中,quartz2.x一般都是用相应工厂类来建立JobDetail和Trigger的。
一般来说,任务调度有2中方法,一种是只把Job定义为一个普通类,但同时在配置文件中必须指定targetObject和属性,废话不多说,上demo:
<!-- 任务类 --> <bean id="test" class="org.test.job.Task1" /> <bean id="task1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="test" /> </property> <property name="targetMethod"> <value>step1</value> </property> </bean> <bean id="task2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="test" /> </property> <property name="targetMethod"> <value>step2</value> </property> </bean> <bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="task1" /> </property> <property name="cronExpression"> <value>0 0 11 * * ? *</value> </property> </bean> <bean id="trigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="task2" /> </property> <property name="cronExpression"> <value>0 02 11 * * ? *</value> </property> </bean> <bean id="schedule1" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="trigger1" /> <ref bean="trigger2" /> </list> </property> </bean>
当然:我上面是在1个类里面定义2个方法,分别指定这2个方法的触发时间——这种情况不太常见,如果不需要,减少task和trigger就行。但对于我这里说到的这种情况,有无简化方法我暂时还未发现……
在这里,类Task1只是一个很普通的类。
方式2:继承QuartzJobBean类,同时必须重写executeInternal方法。
配置如下:
<!-- 任务类 --> <bean id="job1" class="org.test.job.TestJob1" /> <bean id="job2" class="org.test.job.TestJob2" /> <!-- 定义触发器来管理任务bean --> <bean id="cronTriggerJob1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" p:cronExpression="0 52 17 * * ? *" > <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean" p:durability="true" p:jobClass="org.test.job.TestJob1" /> </property> </bean> <bean id="cronTriggerJob2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" p:cronExpression="0 30 17 * * ? *" > <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean" p:durability="true" p:jobClass="org.test.job.TestJob2" /> </property> </bean> <!-- 执行实际的调度 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerJob1" /> <ref bean="cronTriggerJob2" /> </list> </property> </bean>
这种方式还有代码写法:
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetail = JobBuilder.newJob(Job.class) .setJobData(new JobDataMap(Map map)).build(); //在某一时刻触发 Trigger trigger = TriggerBuilder.newTrigger().startAt(Date date).build(); //在指定cron表达式的时间点触发 // Trigger trigger = TriggerBuilder.newTrigger() // .withSchedule(CronScheduleBuilder.cronSchedule(String cron)).build(); //调度器将任务类与触发器关联 scheduler.scheduleJob(jobDetail, trigger); scheduler.start();
相关推荐
里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例
spring boot+vue+quartz2.2.3整合定时调度系统持久化道mysql,sql脚本在项目里面。sql文件spring boot+vue+quartz2.2.3整合定时调度系统持久化道mysql
spring+quartz任务调度代码版
Spring4.3.15 + Quartz2.2 + Spring MVC管理可以管理任务的暂停,启动、立即执行一次、根据表达式重新调度等功能
Quartz + spring简单配置多个任务调度 spring配置文件 简单配置
spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序
该资源描述了用spring+quartz搭建的环境来管理任务调度的基本配置
Spring+Quartz定时调度jar包和文档
封装通用的Spring3+Struts2+MyBatis3的CRUD+条件分页查询,Spring+Quartz调度,FunctionCharts图像化工具 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
Spring+Quartz实现任务调度的小例子.本来不要资源分的,可是CSDN发布资源最低要求填写分值为1分,没办法了。
-- quartz-2.x的配置 --> class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <value>0/1 * * * * ? <!-- 调度的配置结束 --> <!-- job的配置开始 --> class=...
基于spring+mybatis的quartz计划任务调度应用。支持mysql,oracle多种数据库。
采用了struts2.0,spring2.2,ibatis,quartz,extjs3.0 实现了关于短信的调度框架,对接收人维护,动态添加每日短信数据,编写短信模版,最后通过quartz定时发送,因为短信接口收费所以不提供,需要jar包自己下载,...
最新技术定时器与Spring进行融合,适合开发者进行web技术开发不错的案例。
集成了分布式任务调度框架 Quartz ,任务存储于数据库。 使用SpringMVC作为路由控制, 集成 Swagger2 提供实时 RESTful API文档。 数据持久层集成 Mybatis 框架。 使用自定义注解 @TargetDataSource 实现了多数据源...
quartz自动调度的3种调度形式+传参 1.单纯的quartz调度 2.spring+quartz调度
虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务的数据源、全局作业和/或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用程序服务器的上下文或引用集成在一起。结果就是作业不能访问...
集群下应用server定时任务执行研究,一方面是spring+quartz集群支持,另一方面是统一调度server 通过IHS方式解决,保证同一时间只有一台应用server执行定时任务
分布式 任务调度系统+管理界面 加入zookeeper管理服务调用 相当于一个任务调度系统 参考开源项目 见附件
spring+quartz_jdbc_实现任务调度系统