【Quartz学习总结】——与spring整合
来源:互联网 发布:苹果系统更新数据丢失 编辑:程序博客网 时间:2024/06/05 11:11
一、什么是Quartz?
Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
二、Quartz能干什么/应用场景
如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就 涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.
企业中如每天凌晨2点触发数据同步、发送Email等操作
三、核心接口
Scheduler——核心调度器
Job——任务
JobDetai——任务描述
Trigger——触发器
四、Maven引入依赖jar包
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>4.0.6.RELEASE</version>
- </dependency>
外部依赖spring-context, (spring-jdbc, Velocity, FreeMarker, JasperReports, BSH, Groovy, JRuby, Quartz, EHCache)
五、编写Job代码
- package cn.itcast.quartz;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.scheduling.quartz.QuartzJobBean;
- /**
- *
- *
- */
- public class MyJob extends QuartzJobBean {
- @Override
- protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
- System.out.println("myJob 执行了............." + context.getTrigger().getKey().getName());
- ApplicationContext applicationContext = (ApplicationContext) context.getJobDetail().getJobDataMap()
- .get("applicationContext");
- System.out.println("获取到的Spring容器是: " + applicationContext);
- }
- }
六、CronTrigger 表达式自动生成插件下载地址为:http://download.csdn.net/download/dc2222333/10108996CronTrigger ,表达式的编写学习请点击链接查看点击打开链接
七、spirng配置文件的编写
- <!-- 定义任务bean -->
- <bean name="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
- <!-- 指定具体的job类 -->
- <property name="jobClass" value="cn.itcast.quartz.MyJob" />
- <!-- 指定job的名称 -->
- <property name="name" value="myJob" />
- <!-- 指定job的分组 -->
- <property name="group" value="jobs" />
- <!-- 必须设置为true,如果为false,当没有活动的触发器与之关联时会在调度器中删除该任务 -->
- <property name="durability" value="true"/>
- <!-- 指定spring容器的key,如果不设定在job中的jobmap中是获取不到spring容器的 -->
- <property name="applicationContextJobDataKey" value="applicationContext"/>
- </bean>
- <!-- 定义触发器 -->
- <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
- <property name="jobDetail" ref="myJobDetail" />
- <!-- 每一分钟执行一次 -->
- <property name="cronExpression" value="0/5 * * * * ?" />
- </bean>
- <!-- 定义触发器 -->
- <!-- 演示:一个job可以有多个trigger; -->
- <!-- <bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
- <property name="jobDetail" ref="myJobDetail" />
- 每一分钟执行一次
- <property name="cronExpression" value="0 */1 * * * ?" />
- </bean> -->
- <!-- 定义调度器 -->
- <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
- <ref bean="cronTrigger" />
- <!-- <ref bean="cronTrigger2" /> -->
- </list>
- </property>
- </bean>
- 小结 这个时候只要我们启动spring容器后,定时任务就是按照我们编写的频率和job自动执行。
当我们和spring进行整合以后,我们的开发变得非常的简单,但是这里有两个问题:
一个job能否多个trigger? 可以
在上面代码中我们已经进行了测试,同时将一个job添加到多个trigger中是没有问题的,代码如上。
一个trigger能否多个job? 不可以
阅读全文
0 0
- 【Quartz学习总结】——与spring整合
- 【Quartz】——与spring整合
- Spring与Quartz 整合
- quartz与spring整合
- spring与Quartz整合
- Quartz与Spring的整合
- spring 与 Quartz的整合
- Quartz与Spring的整合
- Quartz与spring的整合
- Quartz学习笔记-Spring整合与简单使用
- Spring、Quartz——整合注意事项
- Spring整理系列(08)——spring与quartz整合执行定时任务
- Spring整理系列(09)——spring与quartz整合触发器执行表达式cronExpression详解
- spring之spring与Quartz整合(二)
- Quartz学习总结(1)——Spring集成Quartz框架
- 【spring配置】——spring整合Quartz定时器
- 【spring配置】——spring整合Quartz定时器
- 【spring配置】——spring整合Quartz定时器
- mysql交换分区时候遇到的一个人为产生的故障
- spark结构化数据处理:Spark SQL、DataFrame和Dataset
- 正式学习java并安装配置开发环境之前,了解一些java的专业术语
- 历经三天的spring+springmvc+mybatis的整合,,,
- shiro内置过滤器研究
- 【Quartz学习总结】——与spring整合
- redis linux 环境搭建
- jaxb 生成xsd文件
- 关于openstack的一些了解
- VMware workstation 14 解决报错无法连接 MKS: 套接字连接尝试次数太多;正在放弃
- The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
- python 函数的四种参数---必选参数、默认参数、可变参数和关键字参数
- 性能工具造数据 (jmeter)
- 线程池