Spring4+quartz2的配置和代码方式调度
来源:互联网 发布:saas软件销售术语 编辑:程序博客网 时间:2024/03/29 21:51
前言:这些天简直被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();
0 0
- Spring4+quartz2的配置和代码方式调度
- spring4.1.5 配置quartz2.2.1
- spring4.1.6配置quartz2.2.1
- Spring4.X整合quartz2.X的超简单配置
- Quartz入门实例12-Spring4和quartz2的集群
- spring4+quartz2基本配置及应用
- spring4.1.6配置quartz2.2.1(maven)
- spring4与quartz2.2集群配置
- quartz2.2.1和spring4.1.4整合使用
- Spring4.2.1+quartz2.2.1整合,集群分布式调度
- Quartz2.1+Spring4实现任务调度简单示例
- Quartz2.2.1+spring4.0.6出现的异常
- Spring4----使用注解方式配置bean和bean的属性
- spring4.2.5实现调度任务的几种方式
- spring4+quartz2.2.1
- spring4.1.5+quartz2.2.1
- Spring4+集成quartz2+
- spring4 + quartz2初探
- 用ant进行工程管理
- 在web项目中获取ApplicationContext上下文的3种主要方式及适用情况
- 每天一个小题目——公交车乘客
- 随机森林(Random Forest, RF)
- hibernate 配置文件之hibernate.cfg.xml说明
- Spring4+quartz2的配置和代码方式调度
- HelloWorld
- nginx负载均衡配置
- 第十章——File I/O
- hibernate的表结构以及表之间的关系的 *.hbm.xml
- Jedis的一些常见操作
- 红黑树的插入和删除分析
- Hibernate学习笔记之基本概念
- C语言之指针操作