使用quartz实现每周一至周五,非法定节假日,每天9:30-11:30,13:00-15:00执行定时任务。
? 我的定时任务需求是:使用quartz实现每周一至周五,非法定节假日,每天9:30-11:30,13:00-15:00执行定时任务。
?
经过学习quartz,发现使用SimperTrigger和CronTrgger这两种触发器都无法满足这种需求的表达,我始终无法相信强
?
大的quartz绝对不可能无法实现这种需求。
?
? 经过别人的指点,终于在一篇法文的blog中找到了类似的解决办法,需要借助于quartz的Calender来实现这种需求,
?
这个过程非常曲折,遇到了很多问题,总体感觉quartz虽然强大,但是社区的活跃程度不够,文档还不是非常完善,
?
这也许是很多开源项目的通病,可能很多复杂一些的需求,直接从文档中无法得到答案,有时候需要自己去阅读源代码,
?
阅读javadoc才能找到答案,解决这一问题后再次印证了那句话,黄天不负有心人,只要你坚持问题总能解决的,
?
下面进入正题。
?
对于排除法定节假日,可以使用HolidayCalendar,但是该类只能排除某一个法定节假日,无法方便的排除一个列表的节假日,因此需要自己扩展该类,代码如下:
?为了方便修改法定节假日,可以将法定节假日的配置放在java properties文件中。?在Spring配置文件中继续配置定时任务,配置如下:?
?
?
1 楼 lonebao 2010-11-12 有个问题,这些功能直接用quartz1.6的API就能实现了,可是对于设置了weeklyCalendar的,如果某个周日因为倒休变更为了工作日,该如何设置啊?另外我是动态创建Trigger的 不是通过配置文件