2.1 Scheduler 总入口
<bean name="quartzScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
<property name="configLocation" value="classpath:quartz.properties"/>
</bean>
quartz的详细配置在quartz.properties文件,具体配置见其注释或参考参考文档,一般默认即为JVM嵌入式Scheduler。也可以配置把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行。
比如定义12点运行任务的,如果12:05运行了一次,然后服务器在12:30重启,如果没有持久化,那还会重新运行一次。
可惜hsqldb不支持select * from foo for update 这样的行锁定sql语法,无法demo。
2.2 Trigger
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<!--朝九晚五工作时间内每半小时执行一次-->
<property name="cronExpression" value="0 0/30 9-17 *,* * ?"/>
</bean>
强大的cronTrigger,类似著名的cron表达式,方便我们任意的job控制的想法。
当然quartz也有简单的simpleTrigger,实现的东西就和jdk中的timer差不多了,另还有好几个其他的timer。详细请参考quartz 的文档。
2.3 POJO式定义
Spring中与quartz 的结合方式有两种,一种是以quartz本身的一些特性,没有很好的体现springside的一切都是pojo宗旨,这里暂且不谈,而springside中实现的是以pojo为job的一种做法,大致的配置如下:
<!-- 使用pojo来做job,指定pojo和method -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="bookStockChecker"/>
<property name="targetMethod" value="check"/>
</bean>
2.4 小心陷阱
- 启动计划的FactoryBean们不要lazy-load,否则计划无法启动。
- Scheduler不要 Autowire,否则会传入一个DataSource/SessionFactory给Scheduler,Scheduler就会认为是许要持久化任 务执行情况,而其实你是JVM形式执行的,就会报没有建立Quartz持久化表,Table or View not Found。
3. Quartz相对于JDK Timer Task的进步
- 首先是细致的Cron语法;
- 然后是可以把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行,详见2.1 Scheduler 总入口;
- 还有线程池并发执行的能力;
- 还有群集执行的能力。
以上特征都可以在quartz的配置文件quartz.properties里看出样貌。
4.常见问题
4.1 如何在Spring配置文件里如何设定定时执行函数的参数?
这是个伪问题,定时执行的函数应该是无参的。正确的方法设定该POJO的成员变量,或者由POJO自行去读取某个配置文件。
分享到:
相关推荐
此资源中为你提供了使用quartz所需的jar包,另包含一个Demo,以及cronExpression表达式的说明。 * 所需的jar包在lib目录中。
quartz+spring集成完整开发富含文档cron表达式的配置说明,执行系统的定时器任务。可以直接集成到你的SSH框架中,完成复杂的定时器功能
好像很多人整合出现了问题,所以抽个demo出来 是一个demo包含源码和lib 在tomcat下可以执行
Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考http://www.blogjava.net/baoyaer/articles/155645.html 博客信息 看此代码,项目里分为两大块,com文件夹下 为上面博客相关学习...
任务调度框架Quartz与Spring2.0进行整合的例子,Eclipse下调试通过。相应的包请自己下载。
support pkg:扩展Spring与Quartz集成的不足之处。 core pkg: 是自身调度业务的封装 实例运行依赖Oracle数据库,根据quartz框架包docs/dbTables/目录下的sql脚本文件,创建表结构,修改工程中的Spring数据源配置。 ...
spring 集成quartz定时任务 用数据库实现quartz的集群
quartz-spring-manager, spring的xml的一个管理器 jar 集成 用户界面是 Bootstrap 欢迎使用 Quartz spring 管理器 !spring的xml的jar 集成,可以用于 web 。如何使用:将/src/main/webapp/scheduler 复制到你将 ...
spring和quartz1.x及quartz2.x集成,具体见博客
NULL 博文链接:https://vista-move.iteye.com/blog/2274246
spring+quartz demo,下载后即可运行,很强大哦....
Spring Quartz 集成,iteye上sundoctor的文章,加上自己的理解,以及一些参考文档
spring集成quartz支持的扩展jar包,spring版本4.0.3
Spring集成Quartz的代码示例,可轻松实现可配置JAVA定时任务。
spring2.0 使用 Quartz 必备包 里面有: quartz-all-1.5.2.jar spring-support.jar 适合:SSH框架 spring2.0 strut2.0 hibernate3.2等
将本web项目导入(jar包已经附带),将项目部署到tomcat服务器上,本次定时规则为每分钟的6秒倍数在控制台输出一句helloWorld与当前时间。亲测通过可用。
spring boot集成quartz定时器,job支持spring的依赖注入
这个是spring 和 quartz的集成,quartz是单独的包,java线程的方式运行,利用自定义Jobfactory来解决spring注入service空指针的问题,简单实例执行main方法即可,很实用
java quartz 集成spring中,html格式
Spring3.2.4 + Quartz2.2.0集成实例 可参考http://blog.csdn.net/liangbinny/article/details/17284691