Quartz 整合Spring 小试牛刀
来源:互联网 发布:模因 知乎 编辑:程序博客网 时间:2024/05/22 14:26
Quartz 是 Opensymphony 组织提供的一个任务调度框架, 具有简单、易用特性的任务调度系统,借助于Cron 表达式,能与spring 进行无缝整合。下面讲一下如何与spring 进行整合:
作业存储:quartz 提供两种作业存储方式:
RAMJobStore: 基于内存来持久化调度程序信息, 这种作业存储类型最容易配置和运行,而且对于大多数应用来说已经够用了。 然而,由于调度程序信息保存在JVM的内存中,因此,一旦应用程序中止,那么所有的调度信息将被丢失。
JDBC作业存储:基于JDBC的作业存储,配置相对麻烦,需要使用JDBC驱动程序和后台数据库保存调度程序的信息,由需要调度程序维护调度信息的用户来设计。
1. 添加相关jar 包: quartz-2.2.1.jar
2. 创建普通java 任务类:
public class MyJob {public void printNow(){System.out.println("Now time is : " + MyDateUtils.dateToString(new Date()));}}
2. spring-quartz.xml 文件配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"<span style="white-space:pre"></span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<span style="white-space:pre"></span>xmlns:aop="http://www.springframework.org/schema/aop"<span style="white-space:pre"></span>xmlns:tx="http://www.springframework.org/schema/tx"<span style="white-space:pre"></span>xmlns:context="http://www.springframework.org/schema/context"<span style="white-space:pre"></span>xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"><span style="white-space:pre"></span><span style="white-space:pre"></span><!-- 监听spring 注入生成bean 信息 --><span style="white-space:pre"></span><bean class="org.mirror.shop.listener.SpringInitBeansListner"></bean><span style="white-space:pre"></span><span style="white-space:pre"></span><!-- bean --> <bean id="myJob" class="org.mirror.shop.job.MyJob" /> <!-- 定义调用对象和调用对象的方法 --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject" ref="myJob" /> <!-- 调用类中的方法 --> <property name="targetMethod" value="printNow" /> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> <property name="concurrent" value="false"/> </bean><span style="white-space:pre"></span><span style="white-space:pre"></span><span style="white-space:pre"></span><!-- 定义触发器管理bean --> <bean id="cronTriggerPunch" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 要管理的bean,可以为多个 --> <property name="jobDetail"> <ref bean="myJobDetail" /> </property> <!-- 执行时间表达式 每5秒中执行一次--> <property name="cronExpression"> <value>0/5 * * * * ?</value> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 --> <bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerPunch" /> </list> </property> <!-- <property name="autoStartup" value="true"/> --> </bean><span style="white-space:pre"></span><span style="white-space:pre"></span></beans>
3. 如果需要修改 quartz 框架的属性值, 可以在 classpath 下添加一个 quartz.properties 属性文件, 项目会自动加载的
# Default Properties file for use by StdSchedulerFactory# to create a Quartz Scheduler Instance, if a different# properties file is not explicitly specified.##调度器名称,无关紧要org.quartz.scheduler.instanceName: DefaultQuartzSchedulerorg.quartz.scheduler.rmi.export: falseorg.quartz.scheduler.rmi.proxy: falseorg.quartz.scheduler.wrapJobExecutionInUserTransaction: false#配置线程实现类org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool#配置线程池的数量org.quartz.threadPool.threadCount: 15#配置线程池里线程的优先级org.quartz.threadPool.threadPriority: 5org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true#配置作业存储#相当于扫描频率,如果系统基于秒级,应培植成1000,quartz默认为分级(60000)org.quartz.jobStore.misfireThreshold: 60000org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
这样进行配置以后, 当应用成功启动以后,就会每 5 秒执行一次 printNow () 方法, 整合spring 就是这么简单。
打印结果:
Now time is : 2015-05-05 15:50:40Now time is : 2015-05-05 15:50:45Now time is : 2015-05-05 15:50:50Now time is : 2015-05-05 15:50:55Now time is : 2015-05-05 15:51:00
0 0
- Quartz 整合Spring 小试牛刀
- Spring-----Spring整合Quartz
- spring整合quartz
- spring整合quartz
- spring整合quartz
- Spring整合quartz配置
- Spring 整合quartz
- Spring整合quartz
- Spring整合Quartz示例
- spring整合quartz
- spring quartz框架整合
- spring跟QuartZ整合
- Spring-quartz整合
- spring整合quartz
- spring整合quartz
- Spring+Quartz整合
- Spring整合Quartz
- spring和quartz整合
- 小白虎远程控制软件待实现功能以及用户反馈! 请大家及时反馈需要完善的地方!
- 【改进版】Unity工程里图片的RGB和Alpha通道的分离
- Android开发工具
- MFC 动态创建Picture Control
- java中Timer定时器
- Quartz 整合Spring 小试牛刀
- 删除某数据库下的所有表
- java 发送email 至 outlook, 中文乱码问题
- C#中多线程使用Thead和ThreadPool比较
- oracle 序列断号问题
- 对互联网垂直社交产品的分析
- Hadoop+Hbase+Zookeeper集群部署
- 史上最全的常用iOS的第三方框架
- undefined reference to 'vtable for XXX class'