您的位置:首页 > 编程语言 > Java开发

Spring 整合 Quartz -实现 动态设定Trigger参数(三)

2009-08-27 14:22 525 查看

前言:

虽然在网上已经有帖子实现了动态设定 spring quartz trigger 参数的动态设定了,如: http://hi.baidu.com/vip099/blog/item/51bbb03d555f5702bba16766.html
我在看完这些帖子之后,感觉有些实现的代码是多余,故将我的改进版特征如下:

总结

1 、 Quartz 既然和 Spring 整合了,那么就不用考虑什么低侵入设计了,最好能够最大化利用 Spring 的特性。
2 、在 SpringQuartz 中,开发者不需要像在纯 Quartz 那样关心 Trigger 、 Job 、 JobDetail 的关联关系和生命周期了,一切有 Spring 搞定。
3 、 Spring 中的 SimpleTriggerBean 和 CronTriggerBean 分别继承了 Quartz 中 SimpleTrigger 和 CronTrigger ,并且实现了 BeanNameAware 、 JobDetailAwareTrigger 、 InitializingBean 接口。
实现 BeanNameAware :获取 xml 配置文件中的 bean id 并且设值为 beanName ,设定其他的参数属性。
实现 InitializingBean :如果这个 CronTriggerBean(SimpleTriggerBean) 实例的 triggrName 没有设置,那么在 afterPropertiesSet() 方法中将 beanName 设定为 triggerName
实现 JobDetailAwareTrigger : SpringQuartz 入口 SchedulerFactoryBean 会自动探测、设定 trigger 、 jobDetail 的关系,通过这个接口获取 Trigger 实例相应的 jobDetail 。







4 、 QuartzJobBean 实现 Job 接口,在 job.execute 调用 executeInternal 抽象方法。如果需要实现stateful job,那么在QuartzJobBean的子类中实现StatefulJob接口就可以了。






5 、关于 SimpleTriggerBean : Spring 的 SimpleTriggerBean 的新加的时间参数为: startDelay 。根据 startDelay 来确定 SimpleTrigger 的 startTime :
setStartTime(new  Date(System.currentTimeMillis() + this .startDelay));


如果重新设定时间,那么只需要重新设定 startTime 和 repeatInterval 就可以了,不用处理 startDelay 。

代码

http://download.csdn.net/source/1609474
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: