今天在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容器,發現運行正常了!