今天帮助同事解决了基于spring quartz的定时程序不工作的问题。总结经验如下:
spring 的quartz 是由 SchedulerFactoryBean管理所有trigger。所以配置文件里要配上SchedulerFactoryBean,并ref到所有trigger。
这里有一点要注意的,就是spring初始化的时候这个SchedulerFactoryBean只能有一个实体。
如果在一个spring容器里加载了多个配有SchedulerFactoryBean的xml配置文件。只有最后一个SchedulerFactoryBean管理的trigger能工作。所以如果一定要把quartz配置文件分开,一定要注意SchedulerFactoryBean只能出现在一个文件中,并由这个bean管理所有文件中的trigger。
同文件中的trigger可以用 ref local="XXXXTrigger",外部文件中的trigger用ref bean="XXXXTrigger"。