今天在Spring中配置Quartz框架如下,定义上午的11点24分30秒执行userSerivce中的doJob方法,然而时间到了却没有执行
<!--schedule--> <bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="cronTrigger" /> </list> </property> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="methodInvokingJobDetail"/> <property name="cronExpression" value="30 24 11 * * ?"/> </bean> <bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="userService"/> <property name="targetMethod" value="doJob"/> </bean>
结果发现在xml配置头曾经配置了一个default-lazy-init="true"的属性,这导致了所有的bean在web容器启动的时候都不会自动实例化 因此导致Quartz框架中的实例bean也没有实例化。 解决方法: 去掉该属性,默认default-lazy-init="false"或者在局部的bean中配置加上lazy-init="false" 修改配置后,重启web容器,发现运行正常了!
本文介绍了一种在Spring框架中使用Quartz进行定时任务配置的方法,并针对未按预期执行的问题给出了具体的原因分析及解决方案。问题根源在于容器启动时默认采用懒加载模式,导致Quartz相关bean未被实例化。
1144

被折叠的 条评论
为什么被折叠?



